Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update scenario Unwanted Visitors #2027

Merged
merged 1 commit into from
Nov 3, 2023
Merged

Update scenario Unwanted Visitors #2027

merged 1 commit into from
Nov 3, 2023

Conversation

Xansta
Copy link
Contributor

@Xansta Xansta commented Oct 27, 2023

Background:

Unwanted Visitors is a multiple mission scenario. It's divided up into three larger pieces. All players need to complete the first relatively short mission. After that, there are three larger parts to the overall scenario. The first part consists of four missions. The players can do between zero and four of these based on the selections made by Relay. The second part consists of three missions. The players can perform zero to three of these missions based on the selections made by Relay. Until reaching the third larger part, Relay is given the option to stand down and end the scenario between missions. The last large part requires the players to choose between one of three final missions:

  • Survive the Exuari attack for a certain amount of time as selected by Relay
  • Find and destroy an Exuari station
  • Exterminate the Exuari - an impossible task since they will continue to spawn, getting stronger each time.

Players that return to Unwanted Visitors later can choose the "Selectable" configuration option to go to the mission they did not get to earlier or repeat one that they failed. There are also a number of optional missions that result in player ship improvement.

Dynamic Celestial Structure:

Many planets, moons, asteroids and stations orbit around in this scenario. Their placement and their names vary each time the scenario is run (hence the reason for the "replayable" mission category). There is a "river" of nebula cutting through the middle of the system hampering navigation. Not everything is in motion, but there's lots of things flying around. Because certain objects (like stations and asteroids) do not have orbit functions built in to them by the Empty Epsilon engine, they are subject to jerky visuals. I understand that this will change with the ECS version of EE. I mention this because some players have complained about the jerky visuals. There's not much I can do about it at this point.

Update Motivation:

My two main goals in returning to this scenario were to add translation functions around strings used by the scenario to interact with the player and to simplify and shorten the code. I reduced the number of lines of code by approximately 3000 and it's now ready for translation. Along the way, I made a bunch of other changes, too. Details follow.

Switched to scenario settings from scenario variations:

  • Enemy power
  • Difficulty/Murphy's law
  • Control of mission selection

Switched to using external scenario utilities:

  • Generate call signs
  • CPU Ship diversification
  • Place station. This required a function to handle station placement aspects unique to this scenario:
    • Station tracking list initializations
    • Station destruction callbacks
    • Related asteroid fields

General code refactoring:

  • Moved some set up code to set globals function
  • Added version information to output terminal console
  • Simplified function calling from update function
  • Unified ship template list: template name, ship strength, creation function, short range radar
  • Simplified default ship spawn placement
  • Simplified player ship name list
  • Unified player ship stats list: template name, strength, cargo space, radar ranges, etc.
  • Simplified player ship set up routine
  • Unified station size list: station template name, strength
  • Simplified custom UI elements:
    • buttons for determining virus status
    • buttons for showing cargo inventory
    • buttons for gathering coolant
    • info banners for gathering coolant
    • timer/status banner for scanning artifact
    • virus timer banner
  • Simplified transport creation and direction
  • Simplified the creation of nebula that impact player coolant and the related impact routine
  • Simplified ordnance restock interactions
  • Simplified mission organization and selection
  • Simplified character information gathering and providing routine
  • Simplified optional mission managing
  • Simplified stellar cartography office clerk description determination
  • Simplified enemy taunt process
  • Switched from delta based countdown timers to timers that use getScenarioTime()
  • Switched from player ship loops that just went through the first 8 to using getActivePlayerShips() to get all of them
  • Switched from loops with underscore as an index variable to i as an index variable
  • Simplified intel mission routine
  • Fixed occasional error in final statistics screen

Other Changes:

Shortened scenario description.
Explained the celestial body structure to the GM when the orbit change section of GM buttons is activated.
Added GM buttons to enable/disable server voices.
Added visual asteroids to asteroid fields and made the asteroid size variation larger.
Added bearing information to warning message to player from station about to be attacked.
Added optional missions completed information to final statistics screen.
Added code to put each station that Relay contacts into the science database with location, services and goods information.
Added more harassing warp capable Exuari when players are trying to dock with satellite stations based on required reputation to get parts.

Future Plans:

I set this scenario up to allow for the addition of more missions in the first two larger sections. Depending on feedback, I might add some more mini-missions to the scenario.

Shorten description
Switch to scenario settings from scenario variations
- enemy power
- difficulty/murphy's law
- control of mission selection
Use external generate call sign scenario utility
Use external place station scenario utility
Added function for handling station placement aspects unique to this scenario:
- list initialization
- station destruction callbacks
- related asteroid fields
Use external cpu ship diversification scenario utility
Refactor:
- Move some set up code to set globals function
- Add version information to output terminal console
- Simplify function calling from update function
- Unified ship template list: template name, ship strength, creation function, short range radar
- Simplified default ship spawn placement
- Simplified player ship name list
- Unified player ship stats list: template name, strength, cargo space, radar ranges, etc.
- Simplified player ship set up routine
- Unified station size list: station template name, strength
- Simplified custom UI elements:
  - buttons for determining virus status
  - buttons for showing cargo inventory
  - buttons for gathering coolant
  - info banners for gathering coolant
  - timer/status banner for scanning artifact
  - virus timer banner
- Simplified transport creation and direction
- Simplified the creation of nebula that impact player coolant and the related impact routine
- Simplified ordnance restock interactions
- Simplified mission organization and selection
- Simplified character information gathering and providing routine
- Simplified optional mission managing
- Simplified stellar cartography office clerk description determination
- Simplified enemy taunt process
- Switched from delta based countdown timers to timers that use getScenarioTime()
- Switched from player ship loops that just went through the first 8 to using getActivePlayerShips() to get all of them
- Switched from loops with underscore as an index variable to i as an index variable
- Simplified intel mission
Add translation function to strings where the scenario interacts with the player
Explain the celestial body structure to the GM when the orbit change section of GM buttons is activated
Add GM buttons to enable/disable server voices
Added visual asteroids to asteroid fields and made the asteroid size variation larger
Added bearing information to warning message to player from station about to be attacked
Fixed occasional error in final statistics screen
Added optional missions completed information to final statistics screen
Added code to put each station that Relay contacts into the science database with location, services and goods information
Added more harassing warp capable Exuari when players are trying to dock with satellite stations based on required reputation to get parts
@daid daid merged commit fd18ff8 into daid:master Nov 3, 2023
7 checks passed
Tsht pushed a commit to Tsht/EmptyEpsilon that referenced this pull request Nov 22, 2023
Shorten description
Switch to scenario settings from scenario variations
- enemy power
- difficulty/murphy's law
- control of mission selection
Use external generate call sign scenario utility
Use external place station scenario utility
Added function for handling station placement aspects unique to this scenario:
- list initialization
- station destruction callbacks
- related asteroid fields
Use external cpu ship diversification scenario utility
Refactor:
- Move some set up code to set globals function
- Add version information to output terminal console
- Simplify function calling from update function
- Unified ship template list: template name, ship strength, creation function, short range radar
- Simplified default ship spawn placement
- Simplified player ship name list
- Unified player ship stats list: template name, strength, cargo space, radar ranges, etc.
- Simplified player ship set up routine
- Unified station size list: station template name, strength
- Simplified custom UI elements:
  - buttons for determining virus status
  - buttons for showing cargo inventory
  - buttons for gathering coolant
  - info banners for gathering coolant
  - timer/status banner for scanning artifact
  - virus timer banner
- Simplified transport creation and direction
- Simplified the creation of nebula that impact player coolant and the related impact routine
- Simplified ordnance restock interactions
- Simplified mission organization and selection
- Simplified character information gathering and providing routine
- Simplified optional mission managing
- Simplified stellar cartography office clerk description determination
- Simplified enemy taunt process
- Switched from delta based countdown timers to timers that use getScenarioTime()
- Switched from player ship loops that just went through the first 8 to using getActivePlayerShips() to get all of them
- Switched from loops with underscore as an index variable to i as an index variable
- Simplified intel mission
Add translation function to strings where the scenario interacts with the player
Explain the celestial body structure to the GM when the orbit change section of GM buttons is activated
Add GM buttons to enable/disable server voices
Added visual asteroids to asteroid fields and made the asteroid size variation larger
Added bearing information to warning message to player from station about to be attacked
Fixed occasional error in final statistics screen
Added optional missions completed information to final statistics screen
Added code to put each station that Relay contacts into the science database with location, services and goods information
Added more harassing warp capable Exuari when players are trying to dock with satellite stations based on required reputation to get parts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants