2021-07-10 19:39:19 +02:00
|
|
|
Taisei Project
|
|
|
|
==============
|
|
|
|
|
|
|
|
.. image:: misc/icons/taisei.ico
|
|
|
|
:width: 150
|
|
|
|
:alt: Taisei Project icon
|
2018-01-20 04:21:21 +01:00
|
|
|
|
|
|
|
.. contents::
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
------------
|
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
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>`__.
|
2021-11-12 17:27:45 +01:00
|
|
|
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.
|
2021-07-10 19:39:19 +02:00
|
|
|
|
|
|
|
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>`__.
|
2018-01-20 04:21:21 +01:00
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
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
|
|
|
|
-------------------------
|
2018-01-20 04:21:21 +01:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Obtaining Source Code
|
2019-02-20 03:55:54 +01:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Source
|
|
|
|
______
|
2018-01-20 04:21:21 +01:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
We recommend fetching the source code using ``git``:
|
2018-01-20 04:21:21 +01:00
|
|
|
|
2021-09-19 18:05:07 +02:00
|
|
|
.. code:: sh
|
2018-01-20 04:21:21 +01:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
git clone --recurse-submodules https://github.com/taisei-project/taisei
|
2018-01-20 04:21:21 +01:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
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.
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Archive
|
|
|
|
_______
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
⚠️ **NOTE**: Due to the way GitHub packages source code, the ``Download ZIP``
|
|
|
|
link on the main repo *does not work*.
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
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
|
2021-11-12 17:27:45 +01:00
|
|
|
archives manually, and you **MUST** download the archive from the
|
2021-07-10 19:39:19 +02:00
|
|
|
`Releases <https://github.com/taisei-project/taisei/releases>`__ page.
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Compiling Source Code
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Currently, we recommend building Taisei on a POSIX-like system (Linux, macOS,
|
|
|
|
etc).
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
While Taisei is highly configurable, the easiest way to compile the code for
|
|
|
|
your host machine is:
|
2020-02-15 18:45:09 +01:00
|
|
|
|
2021-09-19 18:05:07 +02:00
|
|
|
.. code:: sh
|
2020-02-15 18:45:09 +01:00
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
meson setup build/
|
|
|
|
meson compile -C build/
|
|
|
|
meson install -C build/
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
2021-09-19 18:05:07 +02:00
|
|
|
See the `Building <./doc/BUILD.rst>`__ doc for more information on how to build
|
|
|
|
Taisei, and its list of dependencies.
|
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
Replays, Screenshots, and Settings Locations
|
|
|
|
--------------------------------------------
|
2018-01-20 04:21:21 +01:00
|
|
|
|
|
|
|
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``
|
|
|
|
|
2019-02-20 03:55:54 +01:00
|
|
|
This is referred to as the **Storage Directory**. You can set the environment
|
|
|
|
variable ``TAISEI_STORAGE_PATH`` to override this behaviour.
|
2018-01-20 04:21:21 +01:00
|
|
|
|
|
|
|
Troubleshooting
|
|
|
|
---------------
|
|
|
|
|
2021-11-06 00:02:55 +01:00
|
|
|
Documentation for many topics, including development and game controller
|
|
|
|
support, can be found in our `docs section <./doc/README.rst>`__.
|
|
|
|
|
2021-07-10 19:39:19 +02:00
|
|
|
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.
|
2018-01-20 04:21:21 +01:00
|
|
|
|
|
|
|
Contact
|
|
|
|
-------
|
|
|
|
|
2019-02-20 03:55:54 +01:00
|
|
|
- https://taisei-project.org/
|
|
|
|
|
|
|
|
- `Our server on Discord <https://discord.gg/JEHCMzW>`__
|