• Stars
    star
    1,133
  • Rank 41,104 (Top 0.9 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 11 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Compatible client of Ace of Spades 0.75

OpenSpades Build status All releases downloads Latest release Crowdin

OpenSpades banner

Official websiteDownloadCommunityTrello board

What is it?

OpenSpades is a compatible client of Ace of Spades 0.75.

  • Can connect to a vanilla/pyspades/pysnip server.
  • Uses OpenGL/AL for better experience.
  • Open source, and cross platform.

How to Build/Install?

Before you start: In case you're having issues to build OpenSpades, it may be because this README file is outdated, if so:

  1. See the Building Guide, which may be up to date
  2. Or open an issue if the problem persists

On Linux

Snap package

On snap enabled systems, the latest pre-built stable release of OpenSpades can be installed with:

sudo snap install openspades

Once installed, you'll be able to launch OpenSpades from inside the desktop menu or from your terminal with the openspades

Flatpak package

On flatpak enabled systems, OpenSpades can be installed with:

flatpak install flathub jp.yvt.OpenSpades

Once installed, you'll be able to launch OpenSpades from inside the desktop menu or from your terminal with flatpak run jp.yvt.OpenSpades

On Unixes (from source)

Building

  1. Install dependencies:

    On Debian-derived distributions:

    sudo apt-get install build-essential pkg-config libglew-dev libcurl4-openssl-dev libsdl2-dev \
      libsdl2-image-dev libalut-dev xdg-utils libfreetype6-dev libopus-dev \
      libopusfile-dev cmake imagemagick zip unzip
    

    (because of a bug in some distributions, you might also have to install more packages by sudo apt-get install libjpeg-dev libxinerama-dev libxft-dev)

    On Fedora or other RHEL-derived distributions:

    sudo dnf install make automake gcc gcc-c++ kernel-devel pkgconf-pkg-config glew-devel \
      openssl-devel libcurl-devel SDL2-devel SDL2_image-devel \
      freealut-devel xdg-utils freetype-devel opus-devel opusfile-devel \
      libjpeg-devel libXinerama-devel libXft-devel cmake ImageMagick \
      zip unzip
    

    On FreeBSD:

    sudo pkg install gmake automake pkgconf glew openssl curl sdl2 sdl2-image \
      freealut xdg-utils freetype2 opus opusfile jpeg-turbo libXinerama libXft \
      cmake ImageMagick7 zip unzip
    

    On other distributions: Install corresponding packages from your repository (or compile from source).

    Building OpenSpades requires a C++ compiler, which is included in the dependencies above in case you don't have one installed yet.

  2. Clone OpenSpades repository:

    git clone https://github.com/yvt/openspades.git && cd openspades
  3. Create directory openspades.mk in cloned/downloaded openspades repo and compile:

    mkdir openspades.mk
    cd openspades.mk
    cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo && make

Installing and launching

To launch the built game without installing:

cd $REPO_DIRECTORY/openspades.mk; bin/openspades

To install the game to your system (recommended), take the following steps:

  1. Execute the following command:

    sudo make install
    

    note: If you have a previous installation of OpenSpades, you have to uninstall it manually by sudo rm -rf /usr/local/share/games/openspades before installing a new one, or else it might load old resources.

  2. Launch the game by typing openspades into command line, or search for it from start menu.

Alternatively, to install the game to a different directory, take the following steps:

  1. Copy the Resources directory into bin (or else the game won't launch):

    cp -r ./Resources ./bin/
    

    note: If you plan on distributing it, remember to remove CMake files and folders from Resources.

  2. Move the "/openspades.mk" folder somewhere else, for example /home/user/Games, or /opt/games and rename it to "/OpenSpades".

  3. The game's launcher is located at bin/openspades. You can create a shortcut for it on the desktop or a .desktop file placed in /usr/share/applications/ for it to appear in Start Menu. Make sure to set the bin directory as the shortcut's working directory, or else you will get an error about missing resources.

    note: If you choose a directory outside of your /home/user, for example /opt/games, remember to chmod the game launcher's permissions to 755.

After successful installation, optionally you can remove the source code and build outputs to save disk space (~100MB).

On Linux (from source, by Nix Flakes)

To build and run OpenSpades from the latest source code:

nix shell github:yvt/openspades -c openspades

To build and run OpenSpades for development:

git clone https://github.com/yvt/openspades.git && cd openspades
nix develop
# note: this will patch CMake files in the source tree
cmakeBuildType=RelWithDebInfo cmakeConfigurePhase
buildPhase
bin/openspades

note: Nix Flakes are an experimental feature of Nix and must be enabled manually. See this wiki article for how to do that.

On Windows (with Visual Studio)

  1. Get the required software if you haven't already:
  • CMake 2.8+
  • PowerShell 5.0
    • Integrated with Windows 10.
    • Older versions are not tested, but might work
  • Visual Studio 2017 or later
    • VS2015 is also supported, but VS2017 is more recommended
    • VS2013 is no longer supported, but might work
  1. Grab the source code:
  1. Checkout the source
  • All examples will assume E:/Projects/openspades, update paths in the examples to reflect yours
  • Make sure to update all git submodules, e.g., by git clone ... --recurse-submodules). Note that the GitHub website's ZIP download currently does not support submodules.
  1. Build libraries using vcpkg:

    cd E:\Projects\openspades
    vcpkg\bootstrap-vcpkg.bat
    vcpkg\vcpkg install @vcpkg_x86-windows.txt
  2. Run CMake:

  • Source: E:\Projects\openspades
  • Binaries: E:\Projects\openspades\OpenSpades.msvc
  • Generator:
    • For VS2019: Visual Studio 16 (2019)
    • For VS2017: Visual Studio 15 (2017)
    • For VS2015: Visual Studio 14 (2015)
  • Platform: Win32
  • Toolchain file: E:\Projects\openspades\vcpkg\scripts\buildsystems\vcpkg.cmake
  • Add a new string entry VCPKG_TARGET_TRIPLET=x86-windows-static
  1. Open E:\Projects\openspades\OpenSpades.msvc\OpenSpades.sln in Visual Studio.
  2. Build the solution.
  • The recommended build configuration is MinSizeRel or Release if you're not an developer
  • The default build output directory is E:\projects\OpenSpades\OpenSpades.msvc\bin\BUILD_TYPE\
  1. To get audio working, download a Windows release of OpenSpades, extract it, and copy the following dlls to the build output directory:
  • For OpenAL audio: openal32.dll
  • For YSR audio: YSRSpades.dll, libgcc_s_dw2-1.dll, libstdc++-6.dll, pthreadGC2.dll
  1. Download the Non-free pak, extract it, and copy Nonfree\pak000-Nonfree.pak to the Resources folder inside your build output directory, which is probably E:\Projects\openspades\openspades.msvc\bin\BUILD_TYPE\Resources. You can also copy the paks contained in Official Mods folder of OpenSpades 0.0.12b to add more fonts and improve localization support of your build.

On macOS (with Ninja)

Requirements

  • Xcode Command Line Tools
  • CMake
  • pkg-config
  • gcc 6 or newer (not clang!) — macOS 10.14 (Mojave) or earlier only
  • ninja

Building

  1. Install the Xcode Command Line Tools and other required build tools.

    xcode-select --install

    Using Homebrew:

    brew install cmake pkg-config ninja
    
    # If you are using macOS 10.14 (Mojave) or earlier:
    brew install gcc
    

    Using Nix:

    • Add $(nix-build '<nixpkgs>' -A pkg-config-unwrapped --no-out-link)/bin to PATH.
  2. Clone the Openspades repository:

    git clone https://github.com/yvt/openspades.git --recurse-submodules && cd openspades
  3. Bootstrap vcpkg and install the required packages:

    vcpkg/bootstrap-vcpkg.sh
    vcpkg/vcpkg install @vcpkg_x86_64-darwin.txt
  4. Create directory openspades.mk in the cloned/downloaded openspades repo and compile:

    mkdir openspades.mk
    cd openspades.mk
    cmake -G Ninja .. -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_OSX_ARCHITECTURES=x86_64 -D CMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -D VCPKG_TARGET_TRIPLET=x64-osx
    ninja
  5. Launch:

    open bin/OpenSpades.app

    (Universal builds aren't supported yet.)

Network usage during building

OpenSpades' build process automatically downloads prebuilt game assets and libraries as needed. Specifically:

In addition, vcpkg (sort of package manager only used for Windows and macOS builds) collects and sends telemetry data to Microsoft. You can opt out of this behavior by passing -disableMetrics option when running vcpkg/bootstrap-vcpkg.sh command.

Troubleshooting

For troubleshooting and common problems see TROUBLESHOOTING.

Licensing

Please see the file named LICENSE.

More Repositories

1

rlsf

Constant-time dynamic memory allocator in Rust
Rust
83
star
2

Stella2

Light-weight desktop client for instant messaging services (abandoned)
Rust
48
star
3

amx-rs

Rust wrapper for Apple Matrix Coprocessor (AMX) instructions
Rust
44
star
4

terravox

Simple heightmap Editor for Voxlap5 VXL (512x512x64 only)
C++
29
star
5

img2text

Image-to-text converter
Rust
22
star
6

svgbobdoc

Rust procedural macro that renders ASCII diagrams in doc comments as SVG images.
Rust
19
star
7

xalloc-rs

Dynamic suballocators for external memory (e.g., Vulkan device memory). Umaintained - consider migrating to https://crates.io/crates/offset-allocator
Rust
15
star
8

zig-armv8m-test

Minimal Zig-based app for Armv8-M + TrustZone
Zig
10
star
9

tokenlock

Provides cell types that decouple permissions from data.
Rust
9
star
10

VxlToObj

Converts .vxl to .obj
C#
8
star
11

cryo

&'a T → impl Deref + 'static
Rust
8
star
12

swsurface-rs

Software-rendered surface for winit (WIP)
Rust
7
star
13

ARcane

Experiment with WebGL, voxel ray tracing, and ARToolkit
TypeScript
7
star
14

try_match-rs

An expression macro that matches a pattern and returns `Result` or `Option`.
Rust
7
star
15

farcri-rs

FarCri.rs: Criterion.rs-based microbenchmarking library for resource-constrained systems
Rust
7
star
16

zellij-cpulamp

Minimal CPU activity indicator plugin for Zellij
Rust
6
star
17

Agiletimbres

Synthesizer designed to work on SHARP electronic dictionary
C++
6
star
18

druzhba

Experimental statically-composed component framework written in Zig
Zig
5
star
19

xtbook

SHARP Brain用Wikipediaビューア (開発中止)
C++
5
star
20

ngspades

Abandoned game engine project
Rust
4
star
21

tcw3-calc

Simple calculator app written in Rust
Rust
4
star
22

consolist

Outputs a bitmap image to a browser's developer console or a terminal.
JavaScript
4
star
23

yfft-rs

Simple FFT library written in Rust (abandoned)
Rust
4
star
24

actix_lambda_http

Actix Web Framework 1.x ←🔗→ AWS Lambda + API Gateway
Rust
3
star
25

openspades-voxlap

C++
3
star
26

queen-compiler

Not so useful compiler that mainly targets .NET output
C#
3
star
27

threejs-geometry-hittest

Checks whether a THREE.Geometry intersects with a primitive shape
JavaScript
3
star
28

openspades-paks

Shell
3
star
29

tcw

Lightweight and Thin GUI Toolkit for SDL Based C++ Applications
C++
2
star
30

zhang_hilbert

A Rust crate for generating an arbitrary-sized pseudo-Hilbert scan
Rust
2
star
31

yvt-pysnip-scripts

Add-on scripts for piqueserver and PySnip
Python
2
star
32

BloodyKart

my very old work (quite incomplete)
Logos
2
star
33

shell-graphics

Bitmap manipulation library written in a bash shell script.
Shell
2
star
34

pvfilt

Extract numbers from a program's output to display a progress bar, etc.
Rust
2
star
35

xpcom-mono-interop-test

Makefile
1
star
36

flags-macro-rs

Provides a helper macro for writing bitflags in Rust.
Rust
1
star
37

alt_fp-rs

Alternative implementation for floating-point operations.
Rust
1
star
38

gyuto_nu

Ruby
1
star
39

MagicHand

Control your computer using web technology
C++
1
star
40

macropol-rs

Ergonomic string literal interpolation in macro definitions
Rust
1
star
41

interlock-rs

Readers-writer locks optimized for locking intervals
Rust
1
star
42

dotfiles

somepony likes to share their dotfiles (moved to <https://codeberg.org/yvt/dotfiles>)
Nix
1
star
43

veisku

Opinionated, personal file-oriented document manager (moved to <https://codeberg.org/yvt/veisku>)
Rust
1
star
44

openspades-media

OpenSpades related media files (alternative for now-deprecated Dropbox Public folder)
HTML
1
star
45

RoundTripOpus

VST/AudioUnit effect that encodes and decodes audio using Opus
C++
1
star
46

rx631_blinky_rust

Rust Blinky on Renesas RX631, built by the experimental GCC codegen
Rust
1
star
47

Merlion

Dynamically configurable load balancer with .NET realtime network application server
C++
1
star