[a Work In Progress fork, expect history overwriting]
Find a file
Andrei Alexeyev a78b67ad65
resource: set name before ires is put into the hashtable
This should fix a rare race condition in res_load_dependency where the
dep could make its way to ires_make_dependent_one without having the
name set yet, failing an assertion there.

It also gets rid of a name parameter to load_resource, since the name is
always known at that point.
2023-03-30 00:47:12 +02:00
.github/workflows ci: trigger on *.m (objc) sources too 2023-03-29 19:31:26 +02:00
atlas atlas: convert old overrides into new-style configs 2022-12-04 17:22:49 +01:00
doc build: fix meson deprecation warning 2023-02-03 07:08:37 +01:00
emscripten vfs,build,emscripten: new resource delivery system for Emscripten 2023-01-28 00:31:15 +01:00
external external: update koishi 2023-02-26 15:47:12 +01:00
misc fix release pipeline 2023-02-02 23:05:36 -05:00
resources shader: optimize and enhance water effects 2023-03-17 02:50:16 +01:00
scripts vfs,build,emscripten: new resource delivery system for Emscripten 2023-01-28 00:31:15 +01:00
src resource: set name before ires is put into the hashtable 2023-03-30 00:47:12 +02:00
subprojects build,ci: Build system maintenance (#350) 2022-12-28 23:15:55 +01:00
switch build,ci: Build system maintenance (#350) 2022-12-28 23:15:55 +01:00
xdg Update Freedesktop.org stuff; add AppStream metadata 2019-09-30 08:50:07 +03:00
.dockerignore Dockerfiles (#278) 2022-05-01 13:49:17 -04:00
.editorconfig Prevent OS DPI scaling on windows (untested) 2020-03-30 02:04:46 +03:00
.gitattributes Update .gitattributes 2020-10-08 08:52:29 +03:00
.gitignore build,ci: Build system maintenance (#350) 2022-12-28 23:15:55 +01:00
.gitmodules build: stop vendoring cglm 2021-04-19 00:50:20 +03:00
.mailmap Update mailmap 2020-10-08 08:52:29 +03:00
checkout add submodule helper scripts, update readme 2019-02-22 23:46:54 +02:00
COPYING update year in COPYING 2019-07-03 21:01:48 +03:00
meson.build util/assert: add optional message to assert, assume, and static_assert 2023-03-26 01:52:41 +01:00
meson_options.txt build: fix errors found by muon analyze (#358) 2023-02-23 22:06:56 +02:00
pull add submodule helper scripts, update readme 2019-02-22 23:46:54 +02:00
README.rst small typos in main README 2021-11-12 11:27:45 -05:00

Taisei Project
==============

.. image:: misc/icons/taisei.ico
   :width: 150
   :alt: Taisei Project icon

.. contents::

Introduction
------------

About Taisei Project
^^^^^^^^^^^^^^^^^^^^

Taisei Project is an open source fan-game set in the world of
`Tōhō Project <https://en.wikipedia.org/wiki/Touhou_Project>`__.
It is a top-down vertical-scrolling curtain fire shooting game (STG), also
known as a "bullet hell" or "danmaku." STGs are fast-paced games focused around
pattern recognition and mastery through practice.

Taisei Project is highly portable, and is written in C11, using SDL2 with an
OpenGL renderer. It is officially supported on Windows, Linux, macOS, and
through WebGL-enabled browsers such as Firefox and Chromium-based browsers
(Chrome, Edge, etc). It can also be compiled for a number of other operating
systems.

For gameplay screenshots, see
`our website <https://taisei-project.org/media>`__.

For gameplay instructions, read `this <doc/GAME.rst>`__.

For the story, read `this <doc/STORY.txt>`__. (Spoiler warning!)

About Tōhō Project
^^^^^^^^^^^^^^^^^^

Tōhō Project is an indie game series (also known as "doujin" in Japanese)
known for its ensemble cast of characters and memorable soundtracks.
It is produced by and large by a single artist known as ZUN, and has a
`permissive license <https://en.touhouwiki.net/wiki/Touhou_Wiki:Copyrights#Copyright_status.2FTerms_of_Use_of_the_Touhou_Project>`__
which allows for indie derivative works such as Taisei Project to legally exist.

Taisei is *not* a "clone" of Tōhō, and tells an original story with its own
music, art, gameplay mechanics, and codebase. While some familiarity with Tōhō
is helpful, the gameplay can be enjoyed on its own without prior knowledge of
the series.

For more information on dōjin culture,
`click here <https://en.wikipedia.org/wiki/D%C5%8Djin>`__.

Installation
------------

You can find precompiled binaries of the complete game on the
`Releases <https://github.com/taisei-project/taisei/releases>`__ page on
GitHub, available for Windows (x86/x64), Linux, and macOS.

An experimental build for Nintendo Switch (homebrew) also exists (use at your
own risk).

You can also play our experimental WebGL build through your web browser
`here <https://play.taisei-project.org/>`__. (Chromium-based browsers and
Firefox supported.)

Source Code & Development
-------------------------

Obtaining Source Code
^^^^^^^^^^^^^^^^^^^^^

Source
______

We recommend fetching the source code using ``git``:

.. code:: sh

    git clone --recurse-submodules https://github.com/taisei-project/taisei

You should also run ``git submodule update`` whenever you pull in
new code, checkout another branch, or perform any ``git`` actions. The ``./pull``
and ``./checkout`` helper scripts can do that for you automatically.

Archive
_______

⚠️ **NOTE**: Due to the way GitHub packages source code, the ``Download ZIP``
link on the main repo *does not work*.

This is due to the fact that GitHub does not package submodules alongside source
code when it automatically generates ``.zip`` files. We've instead created those
archives manually, and you **MUST** download the archive from the
`Releases <https://github.com/taisei-project/taisei/releases>`__ page.

Compiling Source Code
^^^^^^^^^^^^^^^^^^^^^

Currently, we recommend building Taisei on a POSIX-like system (Linux, macOS,
etc).

While Taisei is highly configurable, the easiest way to compile the code for
your host machine is:

.. code:: sh

    meson setup build/
    meson compile -C build/
    meson install -C build/

See the `Building <./doc/BUILD.rst>`__ doc for more information on how to build
Taisei, and its list of dependencies.

Replays, Screenshots, and Settings Locations
--------------------------------------------

Taisei stores all data in a platform-specific directory:

-  On **Windows**, this will probably be ``%APPDATA%\taisei``
-  On **macOS**, it's ``$HOME/Library/Application Support/taisei``
-  On **Linux**, **\*BSD**, and most other **Unix**-like systems, it's
   ``$XDG_DATA_HOME/taisei`` or ``$HOME/.local/share/taisei``

This is referred to as the **Storage Directory**. You can set the environment
variable ``TAISEI_STORAGE_PATH`` to override this behaviour.

Troubleshooting
---------------

Documentation for many topics, including development and game controller
support, can be found in our `docs section <./doc/README.rst>`__.

Feel free to
`open up an issue <https://github.com/taisei-project/taisei/issues>`__ if you
run into any issues with compiling or running Taisei.

Contact
-------

-  https://taisei-project.org/

-  `Our server on Discord <https://discord.gg/JEHCMzW>`__