about summary refs log tree commit diff stats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md190
1 files changed, 190 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..2899e4a --- /dev/null +++ b/README.md
@@ -0,0 +1,190 @@
1# lingo2-archipelago
2
3[Archipelago](https://archipelago.gg/) is an open-source project that supports
4randomizing a number of different games and combining them into one cooperative
5experience. Items from each game are hidden in other games. For more information
6about Archipelago, you can look at their website.
7
8This is a project that modifies the game
9[Lingo 2](https://www.lingothegame.com/lingo2.html) so that it can be played as
10part of an Archipelago multiworld game.
11
12## Installation
13
141. Download the Lingo 2 Apworld from
15 [the releases page](https://code.fourisland.com/lingo2-archipelago/about/CHANGELOG.md).
162. If you do not already have it, download and install the
17 [Archipelago software](https://github.com/ArchipelagoMW/Archipelago/releases/).
183. Double click on `lingo2.apworld` to install it, or copy it manually to the
19 `custom_worlds` folder of your Archipelago installation.
20
21## Joining a Multiworld game
22
231. Open the Archipelago Launcher.
242. Select "Lingo 2 Client".
253. The first time you do this, Archipelago will prompt you for the location of
26 the Lingo 2 executable file ("Lingo2.exe"). You can find this by
27 right-clicking on Lingo 2 in Steam, going to "Manage", and clicking "Browse
28 local files".
294. Lingo 2 will open, and you will see a form asking for your connection
30 details. Enter the Archipelago address, slot name, and password into the
31 fields.
325. Press Connect.
336. Enjoy!
34
35To continue an earlier game, you can perform the exact same steps as above.
36
37## Frequently Asked Questions
38
39### Why aren't the starting room letters shuffled?
40
41The letter requirements for solving puzzles are very restrictive, especially in
42the early game. It is possible for the generator to find some subset of letters
43and doors to place in the starting room such that you are not trapped, but this
44places a lot of strain on generation and leads to significantly more generation
45failures.
46
47As a result, the starting room letters (H1, I1, N1, and T1) are always present
48in the starting room, even when remote letter shuffle is enabled. These letters
49will _also_ count as clearing a check, so you will send out another item at the
50same time as collecting the letter.
51
52### What areas are randomized?
53
54Almost all maps that you can access from the base game are randomized. The
55exceptions are:
56
57- Icarus (this will be randomized at some point, although it will be optional)
58- Demo
59- The Hinterlands (this will probably be repurposed)
60- The beta tester gift maps
61
62### Is my progress saved locally?
63
64Lingo 2 autosaves your progress every time you solve a puzzle, get a
65collectable, or interact with a keyholder. The randomizer generates a savefile
66name based on your Multiworld seed and slot number, so you should be able to
67seamlessly switch between multiworlds and even slots within a multiworld.
68
69The exception to this is different rooms created from the same multiworld seed.
70The client is unable to tell rooms in a seed apart (this is a limitation of the
71Archipelago API), so the client will use the same save file for the same slot in
72different rooms on the same seed. You can work around this by manually moving or
73removing the save folder from the users directory in Lingo 2's game files.
74
75If you play the base game again, you will see one or more save files with a long
76name that begins with "zzAP\_". These are the saves for your multiworlds. They
77can be safely deleted after you have completed the associated multiworld. It is
78not recommended to load these save files outside of the randomizer.
79
80A connection to Archipelago is required to resume playing a multiworld. This is
81because the set of items you have received is not stored locally.
82
83### What about wall snipes?
84
85"Wall sniping" refers to the fact that you are able to solve puzzles on the
86other side of opaque walls. The player is never expected to or required to do
87this in normal gameplay. This randomizer does not change how wall snipes work,
88but it will likewise never require the use of them.
89
90### How do cyan doors work?
91
92In the base game, there are a number of cyan-colored doors that ordinarily open
93once you collect H2 in The Repetitive. There are also a handful of panels that
94only appear upon getting H2 as well, which the apworld treats the same as the
95cyan doors.
96
97There is an option that lets you choose how these doors and panels behave. By
98default, they act the same as in the base game: they only open or appear after
99collecting H2. Note that this means the actual H2 collectable in The Repetitive.
100Receiving H2 via remote letter shuffle does not count for this requirement.
101However, you can also make cyan doors activate upon collecting or receiving your
102first double letter, regardless of what it is or if it's remote. Finally, you
103can lock cyan doors behind an item called "Cyan Doors".
104
105It is important to note, however, that the Cyan Door Behavior option only
106applies to cyan doors that are not already affected by another type of
107shuffling. When door shuffle is on, the following cyan doors are activated by
108individual items and are not impacted by your choice of Cyan Door Behavior:
109
110- The entrance to The Tower from The Great (The Great - Tower Entrance)
111- The entrance to The Butterfly from The Bearer (The Bearer - Butterfly
112 Entrance)
113- The entrance to The Repetitive from The Entry (The Entry - Repetitive
114 Entrance)
115- The eye painting near the yellow color hallway in Daedalus (Daedalus - Eye
116 Painting)
117- The Red I room in The Repetitive (The Repetitive - Anti Collectable Room)
118
119Additionally, when control center color shuffle is enabled, the orange door in
120The Unkempt (which ordinarily doubles as a cyan door) opens upon receiving the
121Control Center Orange Doors item, instead of following the Cyan Door Behavior
122option.
123
124### Help! I lost C/G in The Congruent!
125
126If you place C or G into the relevant keyholders in The Congruent, the keyholder
127disappears. You can retrieve your letter immediately by pressing C or G again
128before leaving solve mode, as the keyholder will still be considered to be
129"focused", even though it has moved. If you have already moved, though, there is
130another way to get your letters back: just use the Key Return in The Entry.
131
132### Why is the tracker telling me to solve a panel that's currently red?
133
134Red usually indicates that a panel cannot be solved because of missing letters.
135However, that only applies to the puzzle's main answer. If a puzzle has
136alternate answers, you may be expected to use one of those instead of the main
137one. As long as you have all of the necessary letters, an alternate answer can
138be typed into a red panel even though it does not show you typing. When you
139finish typing the answer, the panel will solve as normal.
140
141## Running from source
142
143The randomizer is mostly written in Python and GDScript, which do not need to be
144compiled. However, there are three files that need to be generated before the
145apworld can be used.
146
147The first file is `data.binpb`, the datafile containing the randomizer logic.
148You can read about how to generate it on
149[its own README page](https://code.fourisland.com/lingo2-archipelago/about/data/README.md).
150Once you have it, put it in a subfolder of `apworld` called `generated`.
151
152The second generated file is `data_pb2.py`. This file allows Archipelago to read
153the datafile. We use `protoc`, the Protocol Buffer compiler, to generate it. As
154of 0.6.3, Archipelago has protobuf 3.20.3 packaged with it, which means we need
155to compile our proto file with a similar version.
156
157If you followed the steps to generate `data.binpb` and compiled the `datapacker`
158tool yourself, you will already have protobuf version 3.21.12 installed through
159vcpkg. You can then run a command similar to this in order to generate the
160python file.
161
162```shell
163.\out\build\x64-Debug\vcpkg_installed\x64-windows\tools\protobuf\protoc.exe -Iproto\ ^
164 --python_out=apworld\generated\ .\proto\data.proto
165```
166
167The exact path to `protoc.exe` is going to depend on where vcpkg installed its
168packages. The above location is where Visual Studio will probably put it.
169
170The third generated file is `proto.gd`. This is the GDScript version of the
171previous file. We use a Godot script to generate it, which means
172[the Godot Editor](https://godotengine.org/download/) is required. From the root
173of the repository:
174
175```shell
176cd vendor\godobuf
177godot --headless -s addons\protobuf\protobuf_cmdln.gd --input=..\..\proto\data.proto ^
178 --output=..\..\apworld\generated\proto.gd
179```
180
181If you are not on Windows, replace the forward slashes with backslashes as
182appropriate (and the caret with a forward slash). You will also probably need to
183replace "godot" at the start of the second line with a path to a Godot Editor
184executable.
185
186After generating those three files, the apworld should be functional. You can
187copy it into an Archipelago source tree (rename the folder `apworld` to `lingo2`
188if you do so) if you want to edit/debug the code. Otherwise, you can zip up the
189folder and rename it to `lingo2.apworld` in order to package it for
190distribution.