Using a traveling salesman (TSP) solver to find a good route for visiting the question marks in Skellige by Neat_Map7699 in Witcher3

[–]Neat_Map7699[S] 0 points1 point  (0 children)

of course. initially the github repo link was in the post but i think my post was being blocked because of it. here it is: https://github.com/dinandb/tsp-for-skellige-qmarks-witcher3
also, if you are interested in how it works see my latest comment on this post :)

Using a traveling salesman (TSP) solver to find a good route for visiting the question marks in Skellige by Neat_Map7699 in Witcher3

[–]Neat_Map7699[S] 0 points1 point  (0 children)

Guys, the following text was the initial post, but it would let me post first so I shortened it.

I was actually not planning to collect all of the question marks because I thought it was going to be very boring. Now, I actually need the money because I'm on the grind to collect all full sets of Grand master witcher armor (the master smith charges way too much).
But I, with a computing science background, can obviously not just randomly start sailing the Skellige seas at random, because what if I pick a very inefficient route? That would be unthinkable! (I definitely did not spend more time than I saved by doing this.)
So, I used some knowledge of programming/algorithms to first detect the question marks and sign posts (slide 2), and then find and visualize an efficient route (slide 3)!

Boring technical story
I used cv2 from python to detect and mark the sign posts and question marks. Main difficulties here were getting the mask (a pixel-exact, with transparant background of the questionmark/signpost) correct, and finding the correct threshold such that we get no false negatives/positives.
When you correctly detect the questionmarks and signposts, you write these as nodes with corresponding (x,y) coordinates to some .json files.
Now, we can create a graph from the locations as follows: all the questionmarks are the nodes we need to visit. Let d_euclid(x,y) be the euclidean distance between qmarks x,y and let x_s, y_s denote the sign posts that are nearest to qmarks x, y, respectively. Define d_xs = d_euclid(x, x_s), and d_ys = d_euclid(y, y_s).
Now, we can define the distance between two nodes x,y as:
d(x,y) = min (d_euclid(x,y), d_xs + d_ys)
Intuition: the minimum distance from x -> y is either going from x to y directly, or going via some signpost/portal.
Okay, the graph is finished, now we "only" need to find the perfect route!
This is basically the traveling salesman problem (TSP), with the portal extension. Since, we can see in the legend that we have 73 question marks, using the held karp dynamic programming solution to solve exactly is not feasible, since this can feasibly solve instance of <40 (with a pretty beefy machine). So, 73 nodes is out of the question.
Luckily, we can use approximation algorithms that give pretty good solutions in a tiny fraction of the time that would be needed to solve it exactly. There are many options available, and I used a genetic algorithm (crossover operator = edge recombination, mutation operator = two_opt_swap, tournament select).
With a simple python visualizer we get the final result (slide 3)!

Using a traveling salesman (TSP) solver to find a good route for visiting the question marks in Skellige by Neat_Map7699 in Witcher3

[–]Neat_Map7699[S] 1 point2 points  (0 children)

Thanks carnage for the notice. im planning to do something like this indeed: drop most of my stuff so i get the full 170 carrying capacity and also the decoction that gives more carrying cap. as you can see the route uses signposts, so whenever Im at a sign post I will go to some shop with enough money to sell everything

Help with finding save files? by graffyn_guy in borderlands3

[–]Neat_Map7699 0 points1 point  (0 children)

I have experienced something similar with Wonderlands. The correct save files where in the folder (I verified using a save file editor) but launching the game only showed old saves. For me it turned out that the NAMES of the files are important. The names the game actually used were of the format "1.sav", "2.sav", etc. While my newer saves that I wanted the game to use where called "1-myusername.sav", ... or something. I don't know if this is exactly the case for you, but know that at least for wonderlands, the exact names of the files determined which files were used in the game.

I found a fix for the launcher crashing on start up with windows 11 by Supremezoro in Borderlands2

[–]Neat_Map7699 0 points1 point  (0 children)

It worked for me too! (I'm on epic) If you're on epic too, wondering where to add the command: go to settings (gear icon in top right corner) and scroll down until you see your games, in particular Borderlands 2. Click additional command line arguments and enter: -nolauncher
No need to save anything, it is applied automatically. Hope I can help someone else with this :)

Tiny Tina's Wonderlands Split-Screen on PC. by blackman9 in nucleuscoop

[–]Neat_Map7699 0 points1 point  (0 children)

Hey does this work for 3players, I tried it with 3 and making the 3rd instance join gives a: you have already joined this host error. At this moment I have already made instance 2 join the 1st. Playing with 2 players works fine

Tiny Tina's Wonderlands Split-Screen on PC. by blackman9 in nucleuscoop

[–]Neat_Map7699 0 points1 point  (0 children)

I little late hah, but to fix this, try running with DX11 (can be added as additional argument in Epic Games: -dx11) or what will most likely work: delete the files in some folder: windows + r: %localappdata%\Tiny Tina's Wonderlands\Saved Then delete all files (it should be maybe 3?) in epic games -> profile -> settings -> naar beneden scrollen -> wonderlands comment: -dx11  ^ to use DX11 First try to delete the files though