Files
Archipelago/worlds/apquest/docs/en_APQuest.md
NewSoupVi e0cbf77dae APQuest: Implement New Game (#5393)
* APQuest

* Add confetti cannon

* ID change on enemy drop

* nevermind

* Write the apworld

* Actually implement hard mode

* split everything into multiple files

* Push out webworld into a file

* Comment

* Enemy health graphics

* more ruff rules

* graphics :)

* heal player when receiving health upgrade

* the dumbest client of all time

* Fix typo

* You can kinda play it now! Now we just need to render the game... :)))

* fix kvui imports again

* It's playable. Kind of

* oops

* Sounds and stuff

* exceptions for audio

* player sprite stuff

* Not attack without sword

* Make sure it plays correctly

* Collect behavior

* ruff

* don't need to clear checked_locations, but do need to still clear finished_game

* Connect calls disconnect, so this is not necessary

* more seemless reconnection

* Ok now I think it's correct

* Bgm

* Bgm

* minor adjustment

* More refactoring of graphics and sound

* add graphics

* Item column

* Fix enemies not regaining their health

* oops

* oops

* oops

* 6 health final boss on hard mode

* boss_6.png

* Display APQuest items correctly

* auto switch tabs

* some mypy stuff

* Intro song

* Confetti Cannon

* a bit more confetti work

* launcher component

* Graphics change

* graphics and cleanup

* fix apworld

* comment out horse and cat for now

* add docs

* copypasta

* ruff made my comment look unhinged

* Move that comment

* Fix typing and don't import kvui in nogui

* lmao that already exists I don't need to do it myself

* Must've just copied this from somewhere

* order change

* Add unit tests

* Notes about the client

* oops

* another intro song case

* Write WebWorld and setup guides

* Yes description provided

* thing

* how to play

* Music and Volume

* Add cat and horse player sprites

* updates

* Add hammer and breakable wall

* TODO

* replace wav with ogg

* Codeowners and readme

* finish unit tests

* lint

* Todid

* Update worlds/apquest/client/ap_quest_client.py

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Update worlds/apquest/client/custom_views.py

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Filler pattern

* __future__ annotations

* twebhost

* Allow wasd and arrow keys

* correct wording

* oops

* just say the website

* append instead of +=

* qwint is onto my favoritism

* kitty alias

* Add a comment about preplaced items for assertAccessDependency

* Use classvar_matrix instead of MultiworldTestBase

* actually remove multiworld stuff from those tests

* missed one more

* Refactor a bit more

* Fix getting of the user path

* Actually explain components

* Meh

* Be a bit clearer about what's what

* oops

* More comments in the regions.py file

* Nevermind

* clarify regions further

* I use too many brackets

* Ok I'm done fr

* simplify wording

* missing .

* Add precollected example

* add note about precollected advancements

* missing s

* APQuest sound rework

* Volume slider

* I forgot I made this

* a

* fix volume of jingles

* Add math trap to game (only works in play_in_console mode so far)

* Math trap in apworld and client side

* Fix background during math trap

* fix leading 0

* Sound and further ui improvements for Math Trap

* fix music bug

* rename apquest subfolder to game

* Move comment to where it belongs

* Clear up language around components (hopefully)

* Clear up what CommonClient is

* Reword some more

* Mention Archipelago (the program) explicitly

* Update worlds/apquest/docs/en_APQuest.md

Co-authored-by: Ixrec <ericrhitchcock@gmail.com>

* Explain a bit more why you would use classvar matrix

* reword the assert raises stuff

* the volume slider thing is no longer true

* german game page

* Be more clear about why we're overriding Item and Location

* default item classification

* logically considered -> relevant to logic ()

* Update worlds/apquest/items.py

Co-authored-by: Ixrec <ericrhitchcock@gmail.com>

* a word on the ambiguity of the word 'filler'

* more rewording

* amount -> number

* stress the necessity of appending to the multiworld itempool

* Update worlds/apquest/locations.py

Co-authored-by: Ixrec <ericrhitchcock@gmail.com>

* get_location_names_with_ids

* slight rewording of the new helper method

* add some words about creating known location+item pairs

* Add some more words to worlds/apqeust/options.py

* more words in options.py

* 120 chars (thanks Ixrec >:((( LOL)

* Less confusing wording about rules, hopefully?

* victory -> completion

* remove the immediate creation of the hammer rule on the option region entrance

* access rule performance

* Make all imports module-level in world.py

* formatting

* get rid of noqa RUF012 (and also disable the rule in my local ruff.toml

* move comment for docstring closer to docstring in another place

* advancement????

* Missing function type annotations

* pass mypy again (I don't love this one but all the alternatives are equally bad)

* subclass instead of override

* I forgor to remove these

* Get rid of classvar_matrix and instead talk about some other stuff

* protect people a bit from the assertAccessDependency nonsense

* reword a bit more

* word

* More accessdependency text

* More accessdependency text

* More accessdependency text

* More accessdependency text

* oops

* this is supposed to be absolute

* Add some links to docs

* that's called game now

* Add an archipelago.json and explain what it means

* new line who dis

* reorganize a bit

* ignore instead of skip

* Update archipelago.json

* She new on my line till I

* Update archipelago.json

* add controls tab

* new ruff rule? idk

* WHOOPS

* Pack graphics into fewer files

* annoying ruff format thing

* Cleanup + mypy

* relative import

* Update worlds/apquest/client/custom_views.py

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

* Update generate_math_problem.py

* Update worlds/apquest/game/player.py

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

---------

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
2025-11-25 00:38:06 +01:00

3.7 KiB

APQuest

Where is the options page?

The player options page for this game contains all the options you need to configure and export a config file.

What is APQuest?

APQuest is an original game made entirely by NewSoupVi.
It is a minimal 8bit-era inspired adventure game with grid-like movement.
It is about 20 seconds long. However, the client can seamlessly switch between different slots, so if you want to have 10 of them, that should work pretty well.

Crucially, this game is entirely integrated into the client sitting inside its .apworld.
If you have the .apworld installed into your Archipelago install, you can play APQuest.

Why does APQuest exist?

APQuest is implemented to be an example .apworld that can be used as a learning tool for new .apworld developers.
Its source code contains countless comments explaining how each part of the World API works. Also, as of the writing of this setup guide (2025-08-24), it is up to date with all the modern Archipelago APIs.

The secondary goal of APQuest is to be a semi-minimal generic world that is owned by Archipelago.
This means it can be used for Archipelago's unit tests without fear of eventual removal.

Finally, APQuest was designed to be the first ever "game inside an .apworld", where the entire game is coded in Python and Kivy and is playable from within its CommonClient-based Client.
I'm not actually sure if it's the first, but I'm not aware of any others.

Once I'm inside the APQuest client, how do I actually play APQuest?

WASD or Arrow Keys for movement.
Space to swing your sword (if you have it) or interact with objects.
C to fire the Confetti Cannon.

Open chests, slash bushes, open doors, press buttons, defeat enemies.
Once you beat the dragon in the top right room, you win.
That's all there is! Have fun!

A statement on the ownership over APQuest

APQuest is licensed using the MIT license, meaning it can be modified and redistributed by anyone for any purpose.
However, Archipelago has its own ownership structures built ontop of the license.
These ownership structures call into question whether any world implementation can permanently be relied on.

In terms of these non-binding, non-legal Archipelago ownership structures, I will make the following statement.

I, NewSoupVi, hereby relinquish any and all rights to remove APQuest from Archipelago.
This applies to all parts of APQuest with the sole exception of the music and sounds. If I want the sounds to be removed, I must do so via a PR to the Archipelago repository myself. Said PR must keep APQuest intact and playable, just with the music removed.

As long as I am the maintainer of APQuest, I wish to act as such.
This means that any updates to APQuest must go through me.

However, if I ever cease to be the maintainer of APQuest, due to my own wishes or because I fail to uphold the maintainership "contract", the maintainership of APQuest will go to the Core Maintainers of Archipelago, who may then decide what to do with it.
They can decide freely, but if the maintainership goes to another singular person, it is my wish that this person adheres to a similar set of rules that I've laid out here for myself.

Hopefully, this set of commitments should ensure that APQuest will forever be an apworld that can be relied on in Core.
If the ownership structures of Archipelago change, I trust the Core Maintainers (or the owners in general) of Archipelago to make reasonable assumptions about how this statement should be reinterpreted to fit the new rules.