This HLL implements the core gameplay logic for the 3D dungeon
exploration mode.
Key features:
- Collision and Movement:
- Implements 2D collision detection for player movement against walls.
- Field_CalcMove() function calculates the desired position and
adjusts it to slide along walls upon collision.
- Party and AI Mechanics:
- Field_UpdatePlayersUnit() manages party movement, creating a smooth,
snake-like following behavior for up to two companions.
- Field_UpdateEnemyPos() provides basic enemy AI, enabling them to
chase the player when in line-of-sight and within range, or return
to a base position otherwise.
- Interactive Environment:
- Field_UpdateDoors() implements automatic doors that open and close
based on player proximity.
- Field_CheckObjectHit() detects when the player enters the hit-range
of an object, triggering events.
- 3D Space UI:
- Adds dungeon_project_world_to_screen() to translate 3D world
coordinates into 2D screen positions.
- Field_UpdateObjectNamePlate() and Field_UpdateDoorNamePlate() use
this projection to display and manage interactive nameplates for
objects and doors.
- Data Persistence:
- DungeonDataSave() and DungeonDataLoad() serializes and deserializes
the complete dungeon state to .DSD files.
- Integrates dungeon data with the main save system by copying .DSD
files to/from slot-specific .DSA files.
Note: The most complex function in this HLL, the dungeon generator
AutoDungeonE_Create(), is not implemented in this change.
xsystem4
xsystem4 is an implementation of AliceSoft's System 4 game engine for unix-like operating systems.
Compatiblity
See the game compatibility table for a list of games that can be played on xsystem4.
Building
First install the dependencies (corresponding Debian package in parentheses):
- chibi-scheme [optional, for debugger]
- bison (bison)
- cglm (libcglm-dev) [optional, fetched by meson if not available]
- flex (flex)
- freetype (libfreetype-dev)
- glew (libglew-dev)
- meson (meson)
- libffi (libffi-dev)
- libpng (libpng-dev)
- libsndfile (libsndfile-dev)
- libturbojpeg (libturbojpeg0-dev)
- libwebp (libwebp-dev)
- SDL2 (libsdl2-dev)
- zlib (zlib1g-dev)
Then fetch the git submodules,
git submodule init
git submodule update
(Alternatively, pass --recurse-submodules when cloning this repository)
Then build the xsystem4 executable with meson,
mkdir build
meson build
ninja -C build
Finally install it to your system (optional),
ninja -C build install
Windows
xsystem4 can be built on Windows using MSYS2.
First install MSYS2, and then open the MINGW64 shell and run the following command,
pacman -S flex bison \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-meson \
mingw-w64-x86_64-pkg-config \
mingw-w64-x86_64-SDL2 \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-libwebp \
mingw-w64-x86_64-libsndfile \
mingw-w64-x86_64-glew
To build with FFmpeg support, you must compile FFmpeg as a static library:
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
git checkout n6.0
./configure --disable-everything \
--enable-decoder=mpegvideo \
--enable-decoder=mpeg1video \
--enable-decoder=mpeg2video \
--enable-decoder=mp2 \
--enable-parser=mpegaudio \
--enable-parser=mpegvideo \
--enable-demuxer=mpegps \
--enable-demuxer=mpegts \
--enable-demuxer=mpegtsraw \
--enable-demuxer=mpegvideo \
--enable-decoder=vc1 \
--enable-decoder=wmapro \
--enable-parser=vc1 \
--enable-hwaccel=vc1_d3d11va \
--enable-hwaccel=vc1_d3d11va2 \
--enable-hwaccel=vc1_dxva2 \
--enable-demuxer=asf \
--enable-protocol=file \
--enable-filter=scale \
--enable-static \
--disable-shared \
--extra-libs=-static \
--extra-cflags=--static
make
make install
cd ..
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
Then build the xsystem4 executable with meson,
mkdir build
meson build
ninja -C build
To create a portable executable, it is neccessary to copy some DLLs into the same directory as xsystem4.exe. You can determine the required DLLs with the following command,
ldd build/src/xsystem4.exe | grep mingw64
The fonts and shaders directories must also be shipped together with xsystem4.exe.
Installing
If building from source, run:
ninja -C build install
to install xsystem4 on your system.
Windows
The recommended way to install on Windows is to copy the xsystem4 directory
into the game directory. E.g. if Sengoku Rance is installed at
C:\Games\AliceSoft\Sengoku Rance, then your filesystem should look something
like this:
C:\
Games\
AliceSoft\
Sengoku Rance\
System40.ini
xsystem4\
xsystem4.exe
...
...
Running
You can run a game by passing the path to its game directory to the xsystem4 executable,
build/src/xsystem4 /path/to/game_directory
Alternatively, run xsystem4 from within the game directory,
cd /path/to/game_directory
xsystem4
Windows
If you've installed xsystem4 into the game directory as described above, simply
double-click xsystem4.exe to run the game.