1
Modding / [Mod Bounty] Archipelago Integration
« on: July 14, 2023, 04:20:29 AM »
Beginning extraction of Soul of a Crystal Sage... .
Domain databanks located, decrypting automation technology code Factorio [...]
Archipelago, whats that?
Archipelago.gg is a multi-world multi-game multiplayer randomizer.
From the site:
This is a cross-game modification system which randomizes different games, then uses the result to build a single unified multi-player game. Items from one game may be present in another, and you will need your fellow players to find items you need in their games to help you complete your own.
If you are familiar with randomizers for other games such as the various Zelda games, Super Metroid, Dark Souls and more, it's the same idea, except that it's multi world, multi game and multi player. Multi world means multiple instances, multi game means that the instances are not necessarily the same game, and multi player means different people are playing these worlds.
Items, and locations are called checks. These checks are thrown into a large pile and randomized, according to rules that allow them to be accessed (so the BLUE KEY can't be behind a door that directly or indirectly requires the BLUE KEY to open). There is logic so the game is complete-able, and server side archipelago commands that can be run to release items too.
Items aren't always direct "items" such as the Master Sword or Super Missiles, Factorio uses technology as its items: Your Railway tech? That's in another player's Dark Souls game now, and you'll be researching the Master Sword to give to Link, who can find the Dark Souls player's boss soul in Hyrule.
Archipelago has a general client, though not every game uses this. Some games such as Slay the Spire directly talk to the Archipelago server with an installed Archipelago mod, while Factorio needs an Archipelago client as a middleman for the Factorio server to talk to in addition to a mod.
As the subject states, this is a bounty. I have some money to spare. $400 USD to anyone who achieves this integration of the Minimum Viable product detailed below, or equivalent.. If multiple people contribute, it'll be split, I'm not made of cash, I just have some spare from my own commission work. I understand that this is really a pitiful compensation compared to what the work is truly worth, but it is all I can offer up financially. I do however, have python experience so I can help with the integration side of that.
Archipelago documentation
Archipelago is written in python, and the ap_world that every integrated game requires is written in python.
I know python, but my knowledge of Java is rudimentary.
Adding Games
Network Protocol
World API
Archipelago Java client
Archipelago Discord Server (has dev channels)
Design
So what are we randomizing anyway?
Starsector doesn't have a set progression system unlike other games, but there's still lots to randomize, many things could be checks.
The following are my ideas:
The world api allows a kind of 'ranking' of these things; so that weaker but useful early game rewards such as destroyers and low amounts of credits can be set earlier in the progression and more powerful rewards can be found and unlocked later. Different rewards and checks can be flagged as critical to progression as well, such as docking rights.
But where is the player going to find the items that are randomized?
Missions and Exploration
I am envisaging a station in a relatively accessible location, henceforth Archipelago Station. This is where Archipelago bounties are given and cashed in, and the storage thereof is where item/ship rewards are delivered.
Things marked critical for progression should be done as missions.
'trash', trap, and items merely 'useful' could be found via exploration.
(Trap items are special items that some worlds define. In Factorio for example, trap items can be enabled, when a player in another world finds a Trap, it triggers a Biter attack on the factorio player!)
This design outline is just my take on how I'd go about implementing this, it doesn't have to be this way.
I think the Minimum Viable Product is:
Domain databanks located, decrypting automation technology code Factorio [...]
Archipelago, whats that?
Archipelago.gg is a multi-world multi-game multiplayer randomizer.
From the site:
This is a cross-game modification system which randomizes different games, then uses the result to build a single unified multi-player game. Items from one game may be present in another, and you will need your fellow players to find items you need in their games to help you complete your own.
If you are familiar with randomizers for other games such as the various Zelda games, Super Metroid, Dark Souls and more, it's the same idea, except that it's multi world, multi game and multi player. Multi world means multiple instances, multi game means that the instances are not necessarily the same game, and multi player means different people are playing these worlds.
Items, and locations are called checks. These checks are thrown into a large pile and randomized, according to rules that allow them to be accessed (so the BLUE KEY can't be behind a door that directly or indirectly requires the BLUE KEY to open). There is logic so the game is complete-able, and server side archipelago commands that can be run to release items too.
Items aren't always direct "items" such as the Master Sword or Super Missiles, Factorio uses technology as its items: Your Railway tech? That's in another player's Dark Souls game now, and you'll be researching the Master Sword to give to Link, who can find the Dark Souls player's boss soul in Hyrule.
Archipelago has a general client, though not every game uses this. Some games such as Slay the Spire directly talk to the Archipelago server with an installed Archipelago mod, while Factorio needs an Archipelago client as a middleman for the Factorio server to talk to in addition to a mod.
As the subject states, this is a bounty. I have some money to spare. $400 USD to anyone who achieves this integration of the Minimum Viable product detailed below, or equivalent.. If multiple people contribute, it'll be split, I'm not made of cash, I just have some spare from my own commission work. I understand that this is really a pitiful compensation compared to what the work is truly worth, but it is all I can offer up financially. I do however, have python experience so I can help with the integration side of that.
Archipelago documentation
Archipelago is written in python, and the ap_world that every integrated game requires is written in python.
I know python, but my knowledge of Java is rudimentary.
Adding Games
Network Protocol
World API
Archipelago Java client
Archipelago Discord Server (has dev channels)
Design
So what are we randomizing anyway?
Starsector doesn't have a set progression system unlike other games, but there's still lots to randomize, many things could be checks.
The following are my ideas:
- Skills
- Fixed rewards such as Alpha site
- Relations with certain factions (starts unusually low and/or is capped until the check is done)
- Credits
- Ships
- Skills
- AI Cores
- Officers
The world api allows a kind of 'ranking' of these things; so that weaker but useful early game rewards such as destroyers and low amounts of credits can be set earlier in the progression and more powerful rewards can be found and unlocked later. Different rewards and checks can be flagged as critical to progression as well, such as docking rights.
But where is the player going to find the items that are randomized?
Missions and Exploration
I am envisaging a station in a relatively accessible location, henceforth Archipelago Station. This is where Archipelago bounties are given and cashed in, and the storage thereof is where item/ship rewards are delivered.
Things marked critical for progression should be done as missions.
'trash', trap, and items merely 'useful' could be found via exploration.
(Trap items are special items that some worlds define. In Factorio for example, trap items can be enabled, when a player in another world finds a Trap, it triggers a Biter attack on the factorio player!)
This design outline is just my take on how I'd go about implementing this, it doesn't have to be this way.
I think the Minimum Viable Product is:
- Faction relation checks in the multiworld
- Money, ship rewards in the multiworld
- Bounties at archipelago station checks for stuff in the multi world