[a Work In Progress fork, expect history overwriting]
Find a file
Andrei Alexeyev 3615b95f13
Add Reimu Hakurei as a playable character (#106)
* Reimu (#101)

* add the reimu

* Add Reimu story

* account for various blunders

* add reimu dialog picture

* Reimu: WIP yin-yang orbs

* reimu: fix up indents

* Reimu: swap the shotmode names to match the kanji order in her Japanese name

* Reimu: compatibility with the latest system

* WIP ReimuA crap

* ReimuA homing trails

* more ReimuA stuff

* more ReimuA adjustments + enhanced DPS stats

* Reimu: stubs for new player animation sequences

* Reimu: occupy the 0th character slot

* Reimu: tweak needle sprite

* Reimu: buff movement speed to better match Touhou

* Reimu: fixup for the recent projectile changes

* ReimuA: make homing shots a bit smaller; give them custom effect on collision

* Reimu: add intermediate frames; move some loose sprites to the atlas

* Reimu: fix compile errors

* replace DBL_MAX by INFINITY

* Don’t draw reimu orbs twice

fixes #127

* add new reimu dialog pic

* ReimuA adjustments (mostly homing); it's still OP

* wip ReimuB gaps

* still not sure where i'm going with these gaps

* meh

* Reimu: premultiplied alpha fixups after rebase

* reimuB shot pattern with basic power scaling (not balanced at all)

* reimuB: some lame-ass particle effects

* ReimuB bomb effect prototype

* reimuA bomb prototype

* fix reimu shots for the new damage system

* Reimu: use the new player_is_bomb_active() function, add placeholder BG for ReimuB

* some reimuB bomb projectiles

* ReimuB bomb bg and some framebuffer utils required to support it.

Might reuse this at least in part for ReimuA unless we come up with
something better.

* hack to fix ReimuB bomb fade; refactoring needed

* reimuA damaging bombs

* fix ub

* prevent nan when reimuA bombs without enemies present

* add a bomb_bg to reimuA

* ...

* various fantasy seal tweaks

* Reimu: placeholder bomb sounds; slight fantasy seal buff

* fix null pointer dereference

* Reimu "balance" adjustments; minor fixes

* putting bandaids over gunshot wounds

* Add aoe damage and bullet cancel to ReimuB's bomb

* more exorcism porn

* make reimu bomb bg runes better visible on dark backgrounds

* More ReimuA shot changes
2018-08-11 22:13:48 +03:00
atlas Add Reimu Hakurei as a playable character (#106) 2018-08-11 22:13:48 +03:00
doc Add Reimu Hakurei as a playable character (#106) 2018-08-11 22:13:48 +03:00
external Update CGLM to the latest version 2018-07-11 18:05:47 +03:00
misc Revert "meson: do not use build_always, it's deprecated and seems to misbehave on latest meson from git" 2018-07-01 11:48:54 +03:00
resources Add Reimu Hakurei as a playable character (#106) 2018-08-11 22:13:48 +03:00
scripts NSIS: use zlib compression 2018-07-28 03:33:46 +02:00
src Add Reimu Hakurei as a playable character (#106) 2018-08-11 22:13:48 +03:00
subprojects support mipmaps and anisotropy (not used until we have premultiplied alpha) 2018-07-11 14:55:08 +03:00
xdg meson: fixed some install_relative issues 2017-12-21 03:58:54 +01:00
.gitignore Rendering system rewrite, tons of refactoring, optimizations, and other cool stuff (#116) 2018-04-12 17:08:48 +03:00
COPYING COPYING: small clarification 2018-02-09 08:38:09 +02:00
meson.build Use GLAD to set up GL function pointers 2018-06-30 23:11:54 +03:00
meson_options.txt Rendering system rewrite, tons of refactoring, optimizations, and other cool stuff (#116) 2018-04-12 17:08:48 +03:00
README.rst Text rendering rewrite and optimizations; some refactoring (#129) 2018-06-30 00:36:51 +03:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Taisei
======

.. contents::

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

Taisei is an open clone of the Tōhō Project series. Tōhō is a one-man
project of shoot-em-up games set in an isolated world full of Japanese
folklore.

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

Dependencies
^^^^^^^^^^^^

-  SDL2 >= 2.0.5, SDL2_mixer, SDL2_image
-  zlib
-  libzip >= 1.0
-  libpng >= 1.5.0
-  libjpeg
-  freetype2
-  OpenGL >= 3.3

Build-only dependencies
^^^^^^^^^^^^^^^^^^^^^^^

-  meson >= 0.45.0 (build system)
-  Python >= 3.4
-  pkg-config
-  docutils (optional, for documentation)

To build and install Taisei just follow these steps.

::

    mkdir build
    cd build
    meson --prefix=$yourprefix ..
    ninja
    ninja install

This will install game data to ``$prefix/share/taisei/`` and build this
path *statically* into the executable. This might be a package
maintainers choice. Alternatively you may want to add
``-Dinstall_relative=true`` to get a relative structure like

::

    $prefix/taisei
    $prefix/data/

``install_relative`` is always set when building for Windows.

Where are my replays, screenshots and settings?
-----------------------------------------------

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.

Game controller support
-----------------------

Taisei uses SDL2's unified GameController API. This allows us to
correctly support any device that SDL recognizes by default, while
treating all of them the same way. This also means that if your device
is not supported by SDL, you will not be able to use it unless you
provide a custom mapping. If your controller is listed in the settings
menu, then you're fine. If not, read on.

An example mapping string looks like this:

::

    03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,

There are a few ways to generate a custom mapping:

-  You can use the
   `controllermap <https://aur.archlinux.org/packages/controllermap>`__
   utility, which `comes with SDL source
   code <https://hg.libsdl.org/SDL/file/68a767ae3a88/test/controllermap.c>`__.
-  If you use Steam, you can configure your controller there. Then you
   can add Taisei as a non-Steam game; run it from Steam and everything
   should *just work™*. In case you don't want to do that, find
   ``config/config.vdf`` in your Steam installation directory, and look
   for the ``SDL_GamepadBind`` variable. It contains a list of SDL
   mappings separated by line breaks.
-  You can also try the `SDL2 Gamepad Tool by General
   Arcade <http://www.generalarcade.com/gamepadtool/>`__. This program
   is free to use, but not open source.
-  Finally, you can try to write a mapping by hand. You will probably
   have to refer to the SDL documentation. See
   `gamecontrollerdb.txt <misc/gamecontrollerdb/gamecontrollerdb.txt>`__
   for some more examples.

Once you have your mapping, there are two ways to make Taisei use it:

-  Create a file named ``gamecontrollerdb.txt`` where your config,
   replays and screenshots are, and put each mapping on a new line.
-  Put your mappings in the environment variable
   ``SDL_GAMECONTROLLERCONFIG``, also separated by line breaks. Other
   games that use the GameController API will also pick them up.

When you're done, please consider contributing your mappings to
`SDL <https://libsdl.org/>`__,
`SDL_GameControllerDB <https://github.com/gabomdq/SDL_GameControllerDB>`__,
and `us <https://github.com/taisei-project/SDL_GameControllerDB>`__, so
that other people can benefit from your work.

Also note that we currently only handle input from analog axes and
digital buttons. Hats, analog buttons, and anything more exotic will not
work, unless remapped.

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

Sound problems (Linux)
^^^^^^^^^^^^^^^^^^^^^^

If your sound becomes glitchy, and you encounter lot of console messages
like:

::

    ALSA lib pcm.c:7234:(snd_pcm_recover) underrun occurred

it seems like you possibly have broken ALSA configuration. This may be
fixed by playing with parameter values of ``pcm.dmixer.slave`` option
group in ``/etc/asound.conf`` or wherever you have your ALSA
configuration. Commenting ``period_time``, ``period_size``,
``buffer_size``, ``rate`` may give you the first approach to what to do.

Contact
-------

http://taisei-project.org/

#taisei-project on Freenode