Jump to content

Recommended Posts

Posted (edited)

Hey guys, I recently learned about Archipelago Multiworld Randomizer (https://archipelago.gg/) and decided Vintage Story needed to be supported. I've got the basic skeleton of a working apworld and client. I don't know C# or Python very well and haven't been playing Vintage Story for very long. I need more experienced eyes and brains!

A randomizer is a tool for a game that swaps around items, locations, enemies, etc, to provide extended replay value. A multiworld randomizer combines the item pools of multiple games and spreads them throughout all of them. So, if you're playing Zelda and I'm playing Vintage story, I might buy your Bow from a Trader. That Bow then gets sent over the network and you receive it in your game. Similarly, you might send me Flax Seeds when you defeat Bongo Bongo.

As this is a connection between external software, the VS client, and the VS server, it does take a little brain power to setup. The .apworld is included in the mod's zip file. 

If you've got suggestions or bugs, please do let them be known. I'll be posting the source code to GitHub and linking it on the mod page, just as soon as I untangle the mess I've made.

https://mods.vintagestory.at/show/mod/37027

**Edit**: https://github.com/theluckycrab/vintagestory_archipelago

Edited by Crabsoft
added link to source
  • Like 1
Posted

I've been looking into this myself and I'm thinking about making an implementation as well. Don't Starve seems like a decent reference if you need any ideas, and there's also the Archi discord that has a forum for indev setups that has a vintage story thread active. 

Posted
21 minutes ago, Attac_Mage said:

I've been looking into this myself and I'm thinking about making an implementation as well. Don't Starve seems like a decent reference if you need any ideas, and there's also the Archi discord that has a forum for indev setups that has a vintage story thread active. 

I would strongly encourage you to pull the trigger. While most things in 2025 are a huge pain in the butt to work with, VS and Archipelago both have sane setups that are actively pleasant. This took me about a week. I started with 0 knowledge or experience with Archipelago or VS Modding. I did have some game dev background but nothing serious.

  • Like 3
Posted

I haven't had as much time as I wanted too but I myself was also preparing to make an implementation down the line, but now that an implementation exist, maybe collaboration could be the path forward. I won't have as much time still till at least next year, but maybe plans could be made for this if it is wanted?

Posted (edited)

Sure thing. It was mostly a learning project for me, so I'm sure you could do much better much faster. So far, there seems to be 0 interest here or on reddit. I suspect that if we see any interest, it will spike with a big YouTuber/Discord Archipelago session. The source is up, so feel free to take a look. I'll summarize some technical details below.

https://github.com/ArchipelagoMW/Archipelago/tree/main/worlds/apquest - the best starting place for the Archipelago side

https://archipelagomw.github.io/Archipelago.MultiClient.Net/index.html - this is the C# library that bridges Archipelago and Vintage Story

https://github.com/theluckycrab/vintagestory_archipelago/tree/master - the source for both the apworld and mod code

https://youtu.be/_ZM6H4KabU0 - a rambly video I made explaining, this was before the changelog for 2.0.0

Basically, we're just using the MultiClient.Net library to talk to AP and setting up https://apidocs.vintagestory.at/api/Vintagestory.API.Common.INetworkAPI.html?q=Channel to handle VS Client <-> VS Server communication. Hooking into events proved to be a bit frustrating, so every so many ticks we search the player's inventory and figure out if they have either foreign AP items or achievement items and act appropriately.

Technical improvements that need to be made would include saving/loading configs less, figuring out a workaround for the non-working session disconnect, a better method for setting ip/port/connecting, and breaking up the item checks to do less at once. Features to be added would be things like hints and deathlink.

Edited by Crabsoft
Posted (edited)

I'll definitely look into it cause i'm currently doing a test run with an idle game to experience how it play.

I did notice some thing when I first tried with just an only vintage story test.

  • if I don't input the server adress, port and do .aplogin it force stops the world cause too many errors were thrown.
  • according to the mod page I don't see a slot name command so I manually changed the APName value in the config
  • if i make the victory condition steel in the yaml the multiworld config still says Iron

the first point could just be windows only error considering you said you had only tested with linux
For the second point maybe a command should be added to input the Archipelago slot name for now considering a gui window like the character creator could be made to input the archipelago info into so you only try to make the connection when you press a connect button.

I am still busy with doing some small tests but if I find anything else or get any ideas I'll send it here.

Edited by VoidSpawned
Posted (edited)

welp I noticed I play too much modded cause I totally thought the steel anvil was implemented already and when you said in your video that i'ts not possible it made me look to the wiki to see if that was true

Edited by VoidSpawned
  • Haha 1
  • 1 month later...
Posted

I think the price for trader is to much? so maybe an options to adjust it in the mod?

There is also a missing " " between the item given et "should" in the tchat when receiving an item.

And maybe adding an option to "lock" crafts and unlock them trough archipelago item (progressive item). Like maybe unlocking clay forming, coal creation and else? (so this may need logic to be sure that it's not locked behind something impossible to obtain in vintage story itself)

Cause in my game right now, I'm just playing the game normally cause some friend is not playing right and many of my items is blocked behind it.

  • 2 weeks later...
Posted

Hey @Crabsoft I finally have some free time again and am planning to make a test mod to test the waters in VS modding. if I feel comfortable enough with modding VS Could I then work alongside you on the mod or if you don't plan/wanna work on it anymore maybe take over.

Posted (edited)

@VoidSpawned Yeah, for sure. I've been laser focused on some other projects, so I haven't been back to this one in a minute. Anyone is welcome to fork and take over. My email is being a little dumb, so I can't reply directly to the person who emailed me from that email. I'm available on Discord at theluckycrab.

I'm happy to provide whatever support I can. I think what I have so far is kind of a mess! I do want to see well-done Archipelago integration for Vintage Story! I am not emotionally ego-invested in how that happens.

Edited by Crabsoft
Posted

A well-done integration I won't promise at least not for a while but in that case I will fork the mod and start combing through your code and see if i can implement some of the things people added in the discord forum post on the archipelago server.

I also asked in the modding forums if there are any rules about taking over someone elses mod considering I wanna do everything as above board as I can.

  • Like 1
Posted (edited)

ok I'm having trouble getting the mod to work after installing and adding the archipelago multiclient package to the solution. It just keeps saying that it can't find the archipelago.multiclient.net file how did you fix this?

I have got it working by adding the files to the solution directly but I don't think this is how you did it cause your repository doesn't reflect this workaround

Edited by VoidSpawned
Posted (edited)

also when I do get some changes down do you want me to continue working from my fork or would you rather I join your repository as a member.

cause I have already added some code to stop the error spamming in the console for the time achievements and the kill achievements

Edited by VoidSpawned
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.