Skip to content

A 5v5, blazingly fast, character-based libre tactical shooter written in pure C. 🎲

License

Notifications You must be signed in to change notification settings

sparky-game/sparky

Sparky Logo
Sparky

A 5v5 character-based libre tactical shooter

itch.io
Buy Me A Coffee

License C Standard Size Release Blazing Speed

CI Build Linux CI Test Coverage CI Website

🐰 This project is created and maintained in loving memory of Sparky, aka Chispitas, aka Chispis, in the hope he will become immortal and, eventually, one with the Force. 🐰
To the moon and back, forever ❤

Defy the limits: Blend your style and experience on a global, competitive stage. You have 13 rounds to attack and defend your side using sharp gunplay and tactical abilities. And, with one life per-round, you’ll need to think faster than your opponent if you want to survive.

Creativity is your greatest weapon: More than guns and bullets, you’ll choose a character armed with adaptive, swift, and lethal abilities that create opportunities to let your gunplay shine. No two characters play alike, just as no two highlight reels will look the same.

Fight around the world: Each map is a playground to showcase your creative thinking. Purpose-built for team strategies, spectacular plays, and clutch moments. Make the play others will imitate for years to come.

Sparky is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Sparky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Sparky. If not, see https://www.gnu.org/licenses/.

3D Low Poly Scene

Table of Contents

Project’s roadmap

For information about the detailed project’s roadmap, including delivered milestones, see the Sparky’s Roadmap on GitHub.

Documentation

The documentation of Sparky includes:

  • Main documentation (Coming soon!)
  • Reference manual (Coming soon!)
  • GDD (Game Design Document) (Coming soon!)
  • API documentation (Coming soon!)

Usage

$ ./sparky -h
Usage: ./sparky [OPTION]
GNU Sparky --- A 5v5 character-based libre tactical shooter

If no option is provided, the client will start in offline mode.

Options:
  -g, --gui 		start the graphical launcher
  -i, --ip <IP> 	start the client and connect to the server at <IP>
  -s, --server 		start the server
  -h, --help 		display this help and exit
  -v, --version 	output version information and exit

Report bugs to: <https://github.com/sparky-game/sparky/issues>
GNU Sparky home page: <https://sparky-game.org>
General help using GNU software: <https://www.gnu.org/gethelp/>

Binary distributions

(…)

Build from source

In order to build Sparky from source, preparation is needed so as to the environment is properly setup and ready.

Get the code

First, download the codebase of the project. It’s important to do so via the OFFICIAL Git repository hosted on GitHub, and not through any tarball or compressed archive to ensure no tampering is done with the code. Appart from that, any ref can be checked out, being master (the trunk of all dev progress), a tagged commit (e.g. v1.0), an actively maintained version branch (e.g. v1.0.y/stable) or a LTS version branch (e.g. v1.0.y/lts) the preferred ones.

To clone the official repo as well as all its submodules, issue the following command:

git clone --recurse-submodules https://github.com/sparky-game/sparky

Dependencies

These are the packages needed to be able to build Sparky from source, they are divided by distribution/package manager. Also, a command for each one is added to make the installation of these development dependencies as easy and straightforward as possible.

  • make
  • gcc / clang
  • rustc + cargo
  • jq
  • libX11
  • libXcursor
  • libXrandr
  • libXinerama
  • libXi

Debian/Ubuntu

xargs sudo apt install -y < Aptfile

Fedora

sudo dnf install -y make gcc cargo jq libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel

Arch

sudo pacman -S make gcc rust jq libx11 libxcursor libxrandr libxinerama libxi

Gentoo

sudo emerge -va make gcc rust-bin jq libX11 libXcursor libXrandr libXinerama libXi

FreeBSD

sudo pkg install gmake rust jq libX11 libXcursor libXrandr libXinerama libXi

OpenBSD

sudo pkg_add gmake rust jq

macOS

brew bundle install --file=Brewfile

Compilation & Linkage

$ make help
Targets
=======
  all        :: Build all targets marked with [*]
* checkdeps  :: Check dependencies for build process
  menuconfig :: Edit build options with ncurses menu
* game       :: Build the bare game
  check      :: Build and run the test engine
  editor     :: Build the editor
  clean      :: Remove the 'build' directory
  mrproper   :: Remove and cleans everything
  version    :: Show the current version string
  help       :: Show this help and usage panel

Execute 'make' or 'make all' to build all targets marked with [*]
For further info see the ./README.org file

First, ensure the source tree is absolutely clean. From Sparky we recommend this command to be issued prior to each compilation; do not rely on the source tree being clean after cloning the repository or after un-tarring:

make mrproper

There are several ways to configure the build process for it to suit your needs. The most user-friendly way to do so is through a menu-driven interface:

make menuconfig

To build the game, issue the following command:

make

Next, run the test suite:

make check