From d30a8e2ca351ba05d1b346e59feef6d098f75adf Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 25 Sep 2025 19:50:42 -0400 Subject: Reorganized READMEs --- README.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 98 insertions(+), 18 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 1da3c2b..8b1a425 100644 --- a/README.md +++ b/README.md @@ -9,17 +9,33 @@ This is a project that modifies the game [Lingo 2](https://www.lingothegame.com/lingo2.html) so that it can be played as part of an Archipelago multiworld game. -## How To Play - -Here are the components needed in order to play: - -- **Apworld**: This is used by Archipelago to generate randomized Lingo 2 - worlds. - - [Installation & FAQ](https://code.fourisland.com/lingo2-archipelago/about/apworld/README.md) - - [Downloads](https://code.fourisland.com/lingo2-archipelago/about/apworld/CHANGELOG.md) -- **Client**: This is how Lingo 2 connects to an Archipelago multiworld. - - [Installation & FAQ](https://code.fourisland.com/lingo2-archipelago/about/client/README.md) - - [Downloads](https://code.fourisland.com/lingo2-archipelago/about/client/CHANGELOG.md) +## Installation + +1. Download the Lingo 2 Apworld from + [the releases page](https://code.fourisland.com/lingo2-archipelago/about/CHANGELOG.md). +2. If you do not already have it, download and install the + [Archipelago software](https://github.com/ArchipelagoMW/Archipelago/releases/). +3. Double click on `lingo2.apworld` to install it, or copy it manually to the + `custom_worlds` folder of your Archipelago installation. + +## Joining a Multiworld game + +1. Open the Archipelago Launcher. +2. Select "Lingo 2 Client". +3. The first time you do this, Archipelago will prompt you for the location of + the Lingo 2 executable file ("Lingo2.exe"). You can find this by + right-clicking on Lingo 2 in Steam, going to "Manage", and clicking "Browse + local files". +4. Lingo 2 will open, and you will see a form asking for your connection + details. Enter the Archipelago address, slot name, and password into the + fields. +5. Press Connect. +6. Enjoy! + +To continue an earlier game, you can perform the exact same steps as above. + +**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. ## Frequently Asked Questions @@ -46,6 +62,27 @@ exceptions are: - The Hinterlands (this will probably be repurposed) - The beta tester gift maps +### 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 folder from the users directory in Lingo 2's game files. + +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 @@ -95,10 +132,53 @@ before leaving solve mode, as the keyholder will still be considered to be "focused", even though it has moved. If you have already moved, though, there is another way to get your letters back: just use the Key Return in The Entry. -## Project Details - -There are multiple parts of this project: - -- [Client](https://code.fourisland.com/lingo2-archipelago/about/client/README.md) -- [Apworld](https://code.fourisland.com/lingo2-archipelago/about/apworld/README.md) -- [Data](https://code.fourisland.com/lingo2-archipelago/about/data/README.md) +## Running from source + +The randomizer is mostly written in Python and GDScript, which do not need to be +compiled. However, there are three files that need to be generated before the +apworld can be used. + +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 `apworld` called `generated`. + +The second generated file is `data_pb2.py`. This file allows Archipelago to read +the datafile. We use `protoc`, the Protocol Buffer compiler, to generate it. As +of 0.6.3, Archipelago has protobuf 3.20.3 packaged with it, which means we need +to compile our proto file with a similar version. + +If you followed the steps to generate `data.binpb` and compiled the `datapacker` +tool yourself, you will already have protobuf version 3.21.12 installed through +vcpkg. You can then run a command similar to this in order to generate the +python file. + +```shell +.\out\build\x64-Debug\vcpkg_installed\x64-windows\tools\protobuf\protoc.exe -Iproto\ ^ + --python_out=apworld\generated\ .\proto\data.proto +``` + +The exact path to `protoc.exe` is going to depend on where vcpkg installed its +packages. The above location is where Visual Studio will probably put it. + +The third generated file is `proto.gd`. This is the GDScript version of the +previous file. 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=..\..\apworld\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 three files, the apworld should be functional. You can +copy it into an Archipelago source tree (rename the folder `apworld` to `lingo2` +if you do so) if you want to edit/debug the code. Otherwise, you can zip up the +folder and rename it to `lingo2.apworld` in order to package it for +distribution. -- cgit 1.4.1