about summary refs log tree commit diff stats
path: root/client/README.md
blob: 1e94bdb7d8fa293c74113d88233806aaaf03f1df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Lingo 2 Archipelago Client

The Lingo 2 Archipelago Client is a mod for Lingo 2 that allows you to connect
to an Archipelago Multiworld and randomize your game.

## Installation

1. Download the Lingo 2 Archipelago Randomizer from
   [the releases page](https://code.fourisland.com/lingo2-archipelago/about/client/CHANGELOG.md).
2. Open up Lingo 2, go to settings, and click View Game Data. This should open
   up a folder in Windows Explorer.
3. Unzip the randomizer into the "maps" folder. Ensure that archipelago.tscn and
   the Archipelago folder are both within the maps folder.

**NOTE**: It is important that the major version number of your client matches
the major version number of the apworld you generated with.

## Joining a Multiworld game

1. Launch Lingo 2.
2. Click on Level Selection, and choose Archipelago from the list.
3. The selected player is generally ignored by the mod, and you don't even need
   to ensure you use the same player between connections. However, if your
   player name has a gift map associated with it, Lingo 2 will prioritize the
   gift map over loading the mod, so in that case you should choose another
   player.
4. Press Play.
5. Enter the Archipelago address, slot name, and password into the fields.
6. Press Connect.
7. Enjoy!

To continue an earlier game, you can perform the exact same steps as above. You
will probably have to re-select Archipelago from the Level Selection screen, as
the game does not remember which level you were playing.

**Note**: Running the randomizer modifies the game's memory. If you want to play
the base game after playing the randomizer, you need to restart Lingo 2 first.

## Running from source

The mod is mostly written in GDScript, which is parsed and executed by Lingo 2
itself, and thus does not need to be compiled. However, there are two files that
need to be generated before the client can be run.

The first file is `data.binpb`, the datafile containing the randomizer logic.
You can read about how to generate it on
[its own README page](https://code.fourisland.com/lingo2-archipelago/about/data/README.md).
Once you have it, put it in a subfolder of `client` called `generated`.

The second generated file is `proto.gd`. This file allows Lingo 2 to read the
datafile. We use a Godot script to generate it, which means
[the Godot Editor](https://godotengine.org/download/) is required. From the root
of the repository:

```shell
cd vendor\godobuf
godot --headless -s addons\protobuf\protobuf_cmdln.gd --input=..\..\proto\data.proto ^
  --output=..\..\client\Archipelago\generated\proto.gd
```

If you are not on Windows, replace the forward slashes with backslashes as
appropriate (and the caret with a forward slash). You will also probably need to
replace "godot" at the start of the second line with a path to a Godot Editor
executable.

After generating those two files, the contents of the `client` folder (minus
this README) can be pasted into the Lingo 2 maps directory as described above.

## Frequently Asked Questions

### Is my progress saved locally?

Lingo 2 autosaves your progress every time you solve a puzzle, get a
collectable, or interact with a keyholder. The randomizer generates a savefile
name based on your Multiworld seed and slot number, so you should be able to
seamlessly switch between multiworlds and even slots within a multiworld.

The exception to this is different rooms created from the same multiworld seed.
The client is unable to tell rooms in a seed apart (this is a limitation of the
Archipelago API), so the client will use the same save file for the same slot in
different rooms on the same seed. You can work around this by manually moving or
removing the save file from the level1 save file directory.

If you play the base game again, you will see one or more save files with a long
name that begins with "zzAP\_". These are the saves for your multiworlds. They
can be safely deleted after you have completed the associated multiworld. It is
not recommended to load these save files outside of the randomizer.

A connection to Archipelago is required to resume playing a multiworld. This is
because the set of items you have received is not stored locally.

### What about wall snipes?

"Wall sniping" refers to the fact that you are able to solve puzzles on the
other side of opaque walls. The player is never expected to or required to do
this in normal gameplay. This randomizer does not change how wall snipes work,
but it will likewise never require the use of them.