marechal-l / dark-souls-iii-archipelago-client Goto Github PK
View Code? Open in Web Editor NEWThis is the Dark Souls III client made for the multiworld randomizer Archipelago
License: MIT License
This is the Dark Souls III client made for the multiworld randomizer Archipelago
License: MIT License
When playing using archipelago I can receive items from RoR2 players but can't send them any. Same issue when playing RoR2 and not receiving items from DS3 players
Hi, I have actually a pretty annoying problem with the mod.
If you pick up an item offline unintentionally (or because of a connexion problem), and then log back in, this item will be lost forever and will never be synced with the server. The only way i found to correct that is to restart a brand new save and pick the item again.
I own both dlc and it says the they are installed, but when I connect to the randomizer and startup the game it gives a fatal archipelago error saying you need to own both dlc in order to use the dlc setting and then closes the game.
Not sure if this is a known issue, but it seems that receiving the Cinders of a Lord - Prince Lothric before defeating three Lords of Cinder and getting teleported to Emma will crash your game. I was not on the game at the time of receiving the Cinders, and upon connecting to the server and loading the game again, I would crash immediately. I was able to load my game and then connect to the server, which would allow me to play, but I did not receive the Cinders or another item collected at the same time. I tried to use the !getitem command to give me the Cinders but got nothing. I used this command again after getting the cutscene and collecting the item before Grand Archives on the corpse (not sure if corpse items are relevant) and it worked.
I have tested it a couple of times just to make sure it wasn't a fluke:
If you release all the items in a DS3 World with the web admin console, no items are received by the DS3 client.
That effectively bricks the run.
The console will say that the items are sent and received, but it is not the case for the game itself
I can confirm that my settings are fine: If I go and loot an item manually in a game where I didn't use the Release command, the item will be correctly sent to the pool or locally in my inventory and the check will be completed online.
Note: The items will be correctly sent to the other worlds (tested with Risk of Rain 2). My buddy received all of his items on release.
(Copy and paste from Discord)
I followed the directions to put in the .dll file in the /Game/ directory.
When starting the game, the CMD prompt opens. I put in the details of the room, along with my ID. It then takes a moment before connecting.
Everything 'looks' like it is working, but when I pick up items they are not random. For example, the broken sword after the first boss.
The only thing I can think of, unless I'm missing something, is that the version of the game I'm running does not want to work with this randomizer. Since the Steam version is 1.15.2, and the provided downpatcher does not work, I looked online and found a 1.15 version of the game.
When I replace the original and load it up, it shows 1.15 and seems to work just fine, except for the lack of randomization.
I found out that the downpatching information on the SpeedRunner website is out of date since Steam had some kind of update.
From there, I realized I could use the Steam Console to directly download older depots.
I specifically used this:
download_depot 374320 374321 4471176929659548333
Which then downloaded it successfully. From there I deleted everything in my DS3 folder, then moved the freshly downloaded stuff into it.
The game loads, shows 1.15. I put in the AP stuff, the command prompt pops up, can connect to the server.
It still does not randomize my content. With the instructions being so short, I have no idea what I could be missing at this point.
When purchasing items from shops, they are not Auto-Equipped (and as such useless with locked equipment slots).
I also had a couple of other notes/complaints/ideas but i felt like it was too much to make an issue for each:
Randomize starting equipment (maybe also burial gifts?)
Randomize shop items (ideally independant of randomizing npc drops), also maybe make it such that weapons are only purchable once.
Using locked equipment slots also locks consumeable items slots and arrow slots (which i feel is unintended? or atleast should be a setting)
If playing single player with locked equipment, you can get light soft locked by getting a talisman and no other weapons/miracles before iundex gundyr. This does not make him impossible, as you can strong melee for about 10 dmg, but some players might find it too hard to be fun.
I dont know if you can use other mods at the same time as this, but if possible add an enemy randomizer option such that no other third party software is needed.
Also if you enable dlc do you need to use another depot download or is the one on the archipelago website good?
sorry for being annoying
Hi,
it seems like there is a new version 1.15.2 since 12. janurary 2023 which breaks your mod :(
(Disclaimer, I am reporting this on behalf of the DS3 player)
We've been playing a large Archipelago randomizer for a while now, and one of our players just encountered an issue in their DS3 game: whenever they pick up any item, randomized or not, the game immediately crashes. There is no error pop up, and nothing appears in the local archipelago logs, even with /debug on
. The game still connects to the server, and can send and receive messages (e.g. !hint
works, and messages from other players show up). The game is at the correct version (1.15) and has not been updated or otherwise altered (that we know of) since we started playing.
Any ideas on what could be going on here? I'm happy to (try to) provide any additional resources you need to debug this, but I'm currently at a complete loss.
At present, the DSIII client doesn't appear to support SSL.
Possibly helpful - instructions for building with SSL support from APClient here: https://github.com/black-sliver/apclientpp#ssl-support
This sorta qualifies as an issue so i thought i'd place this here.
If selecting the late basin of vows so you don't have to fight the dancer in the first 3 minutes of the game, the game then gets locked behind the Small Lothric Banner and Small Doll as the two major checks that need to occur (excluding the lord ashes to proceed to the final boss).
The problem is when this setting occurs in a multi-person randomizer it regularly places that Small Lothric Banner at about 1/3 to 1/2 of the way through the entire randomizer run for the group. This means within 10-30 minutes you can 100% all available checks, and then be stuck. Every single time i did this the game would leave me stuck unable to proceed for 5+hours.
Checking the spoiler log over multiple generations we realized its beacause it seems to not properly weigh the importance of this first check.
I'm not sure how this plays with the archipelago framework, but this really needs to have some sort of check to disable shuffling of it, or at the very least give it some sort of weighting so its not multiple hours of being unable to proceed; as even if we immediately used the spoiler log and made a b-line for all required items it still effectively seems to expect the Dark Souls 3 player to not play for multiple hours, which is bad, considering how much content exists before the Small doll check.
This is extra bad because by the time i was allowed to move forward, everyone else was then stuck as i needed to play through from that very beggining point of Vordt, all the way to archdragon peak before i was able to give out required items for everyone else; which meant even rushing at top speed I was going to be holding up the entire run because of how absolutely De-synchronized Dark Souls 3 is from the rest of the run.
Build dependencies are currently handled inconsistently.
Most are included as a submodule (minhook, asio, wswrap, websocketpp and apclientpp) but some are simple hard copies (valijson, nlohmann and openSSL is even hard copied twice https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/tree/main/archipelago-client/dep/openssl and https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/tree/main/archipelago-client/subprojects/openssl).
Hard copies are always a bit difficult in terms of licences, bloat up project size and make versioning and updating harder.
In my opinion, they should be removed.
Additionally, most inclusions of subprojects are unnecessary in my opinion (But I am admittedly pretty biased since I'm not a big fan of submodules :D ).
Except for wswrap and apclientpp, all build dependencies are very common C++ dependencies that are available through most generic C++ dependencie solution.
In my opinion, vcpkg would be a good way to handle them.
Vcpkg was made for your build system, Visual Studio, but is also compatible with most other build systems.
It is pretty easy to handle and takes care of nearly all headaches that build dependency stuff can cause.
I'm currently doing a pretty major refactor of this client and most of the current changes are probably not of interest to you since they only concern porting the build process to cmake and changing the runtime deps to mingw-64 instead of Windows, but I made a branch where I cherry-picked the parts concerning the dependency handling with vcpkg.
You would then have to adjust the VS Project to use vcpkg and maybe change some include directives (I can't make any promises that there wont be other problems, I never used VS, but considering vcpkg is made by Microsoft for VS, it should work relatively smoothly).
I'll make a pull request for that branch, but feel free to just close that request again if you don't want to use vcpkg.
I mentioned this in the Discord, but I want to jot it down here as well so it doesn't get lost to the sands of time.
As I understand it, the reason progressive items have their own special "pick from a list"-style randomization is that the mod doesn't see item locations, it only sees item IDs. Since most overworld item locations contain things like Titanite Shards that aren't at all unique, the mod isn't able to distinguish whether the player picked up a Titanite Shard in High Wall of Lothric or bought one in Firelink Shrine.
But I think this issue could be solved without needing to access additional data in the mod itself. The parameter file and map formats are well-understood, so—before booting the game—you could edit the params to add a few hundred additional fake items that exist only to have unique IDs, and then edit the maps to point all the overworld progressive pickups at those fake items. Then you could have an option on the randomizer server to track whether progressive items have been faked out and add them to the item pool if so.
Edit: Actually, you wouldn't even need to generate the params files as part of the mod. All you'd have to do is generate them once (maybe using the C# libraries that other software uses) and provide them as a zip file for people to use along with ModEngine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.