GithubHelp home page GithubHelp logo

teeworlds / teeworlds Goto Github PK

View Code? Open in Web Editor NEW
2.3K 2.3K 619.0 108.29 MB

A retro multiplayer shooter

Home Page: https://www.teeworlds.com

License: Other

Lua 1.33% Python 4.64% Shell 0.37% C 6.97% C++ 83.77% Objective-C 0.12% Batchfile 0.01% CMake 2.68% Objective-C++ 0.10%
c c-plus-plus game linux macos multiplayer opengl sdl2 teeworlds windows

teeworlds's Introduction

Packaging status

Teeworlds GitHub Actions

A retro multiplayer shooter

Teeworlds is a free online multiplayer game, available for all major operating systems. Battle with up to 16 players in a variety of game modes, including Team Deathmatch and Capture The Flag. You can even design your own maps!

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. See license.txt for full license text including copyright information.

Please visit https://www.teeworlds.com/ for up-to-date information about the game, including new versions, custom maps and much more.

Originally written by Magnus Auvinen.


Teeworlds supports two build systems: CMake and bam.

Building on Linux or macOS (CMake)

Installing dependencies

# Debian/Ubuntu
sudo apt install build-essential cmake git libfreetype6-dev libsdl2-dev libpnglite-dev libwavpack-dev python3

# Fedora
sudo dnf install @development-tools cmake gcc-c++ git freetype-devel pnglite-devel python3 SDL2-devel wavpack-devel

# Arch Linux (doesn't have pnglite in its repositories)
sudo pacman -S --needed base-devel cmake freetype2 git python sdl2 wavpack

# macOS
brew install cmake freetype sdl2

Downloading repository

git clone https://github.com/teeworlds/teeworlds --recurse-submodules
cd teeworlds

# If you already cloned the repository before, use:
# git submodule update --init

Building

mkdir -p build
cd build
cmake ..
make

On subsequent builds, you only have to repeat the make step.

You can then run the client with ./teeworlds and the server with ./teeworlds_srv.

Build options

The following options can be passed to the cmake .. command line (between the cmake and ..) in the "Building" step above.

-GNinja: Use the Ninja build system instead of Make. This automatically parallelizes the build and is generally faster. (Needs sudo apt install ninja-build on Debian, sudo dnf install ninja-build on Fedora, and sudo pacman -S --needed ninja on Arch Linux.)

-DDEV=ON: Enable debug mode and disable some release mechanics. This leads to faster builds.

-DCLIENT=OFF: Disable generation of the client target. Can be useful on headless servers which don't have graphics libraries like SDL2 installed.

Building on Linux or macOS (bam)

Installing dependencies

# Debian/Ubuntu 19.10+
sudo apt install bam git libfreetype6-dev libsdl2-dev libpnglite-dev libwavpack-dev python3

# Fedora
sudo dnf install bam gcc-c++ git freetype-devel pnglite-devel python3 SDL2-devel wavpack-devel

# Arch Linux (doesn't have pnglite in its repositories)
sudo pacman -S --needed base-devel bam freetype2 git python sdl2 wavpack

# macOS
brew install bam freetype sdl2

# other (add bam to your path)
git clone https://github.com/teeworlds/bam
cd bam
./make_unix.sh

Downloading repository

git clone https://github.com/teeworlds/teeworlds --recurse-submodules
cd teeworlds

# If you already cloned the repository before, use:
# git submodule update --init

Building

bam

The compiled game is located in a sub-folder of build. You can run the client from there with ./teeworlds and the server with ./teeworlds_srv.

Build options

One of the following targets can be added to the bam command line: game (default), server, client, content, masterserver, tools.

The following options can also be added.

conf=release to build in release mode (defaults to conf=debug).

arch=x86 or arch=x86_64 to force select an architecture.

Building on Windows with Visual Studio & CMake

Download and install some version of Microsoft Visual Studio (as of writing, MSVS Community 2019) with the following components:

  • Desktop development with C++ (on the main page)
  • Python development (on the main page)
  • Git for Windows (in Individual Components → Code tools)

Run Visual Studio. Open the Team Explorer (View → Team Explorer, Ctrl+^, Ctrl+M). Click Clone (in the Team Explorer, Connect → Local Git Repositories). Enter https://github.com/teeworlds/teeworlds into the first input box. Wait for the download to complete (terminals might pop up).

Wait until the CMake configuration is done (watch the Output windows at the bottom).

Select teeworlds.exe in the Select Startup Item… combobox next to the green arrow. Wait for the compilation to finish.

For subsequent builds you only have to click the button with the green arrow again.

Building on Windows with MSVC build tools & bam

Download and install Microsoft C++ Build Tools and Python.

Download and unzip Teeworlds stable sources or Teeworlds latest sources.

Download and unzip bam to teeworlds-version\bam.

Run the x64 Native Tools Command Prompt (or x86 for 32-bit) from the start menu.

# Navigate to the Teeworlds source directory
cd ...\teeworlds-version

# Build bam (use make_win32_msvc.bat for 32-bit)
cd bam
make_win64_msvc.bat
copy bam ..
cd ..

# Build Teeworlds
bam conf=release

Use conf=debug to build the debug version instead. You can also provide a target after the bam command : game (default), server, client, content, masterserver, tools.

Building on Windows with MinGW & CMake

Download and install MinGW with at least the following components:

  • mingw-developer-toolkit-bin
  • mingw32-base-bin
  • mingw32-gcc-g++-bin
  • msys-base-bin

Also install Git (for downloading the source code), Python and CMake.

Open CMake ("CMake (cmake-gui)" in the start menu). Click "Browse Source" (first line) and select the directory with the Teeworlds source code. Next, click "Browse Build" and create a subdirectory for the build (e.g. called "build"). Then click "Configure". Select "MinGW Makefiles" as the generator and click "Finish". Wait a bit (until the progress bar is full). Then click "Generate".

You can now build Teeworlds by executing mingw32-make in the build directory.

teeworlds's People

Contributors

assassintee avatar axblk avatar chillerdragon avatar cinaera avatar datag avatar def- avatar dune-jr avatar fokkonaut avatar fudgyking avatar heinrich5991 avatar joeldevahl avatar kaffeine avatar larsfu avatar learath2 avatar lordsk avatar msiglreith avatar nheir avatar oy avatar phobos99 avatar piepow avatar rexim avatar robyt3 avatar serpis avatar shereef avatar sonix- avatar sushitee avatar teetow avatar tsfreddie avatar xalduin avatar zatline avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

teeworlds's Issues

PPC crash loading CTF5

Report of TW crashing when loading CTF5 on a PPC mac.

Backtrace:

Host Name: PowerMac
Date/Time: 2009-09-06 19:31:09.222 +0100
OS Version: 10.4.11 (Build 8S165)
Report Version: 4

Command: teeworlds
Path: /Applications/Games/Teeworlds.app/Contents/MacOS/teeworlds
Parent: WindowServer [68]

Version: ??? (0.5.1)

PID: 14312
Thread: 0

Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_INVALID_ADDRESS (0x0001) at 0x39928c60

Thread 0 Crashed:
0 teeworlds 0x000429ac datafile_get_data_impl + 60
1 teeworlds 0x00042c98 datafile_get_data + 44
2 teeworlds 0x00048db0 map_get_data + 56
3 teeworlds 0x000392e8 render_tilemap_generate_skip() + 132
4 teeworlds 0x00034460 GAMECLIENT::on_connected() + 36
5 teeworlds 0x0000942c modc_connected + 40
6 teeworlds 0x0005803c client_process_packet + 2404
7 teeworlds 0x00059110 client_pump_network + 264
8 teeworlds 0x00059d34 client_update + 2360
9 teeworlds 0x0005a30c client_run + 1112
10 teeworlds 0x0005ae34 SDL_main + 104
11 teeworlds 0x00089654 -[SDLMain applicationDidFinishLaunching:] + 140
12 com.apple.Foundation 0x92bf4e1c nsnote_callback + 180
13 com.apple.CoreFoundation 0x90805ec0 __CFXNotificationPost + 368
14 com.apple.CoreFoundation 0x907fdf20 CFXNotificationPostNotification + 684
15 com.apple.Foundation 0x92bdf224 -[NSNotificationCenter postNotificationName:object:userInfo:] + 92
16 com.apple.AppKit 0x937a2be8 -[NSApplication postDidFinishNotification] + 112
17 com.apple.AppKit 0x937a2ad4 -[NSApplication sendFinishLaunchingNotification] + 92
18 com.apple.AppKit 0x937a261c -[NSApplication(NSAppleEventHandling) handleAEOpen:] + 264
19 com.apple.AppKit 0x937a21c4 -[NSApplication(NSAppleEventHandling) handleCoreEvent:withReplyEvent:] + 92
20 com.apple.Foundation 0x92bf5e28 -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 380
21 com.apple.Foundation 0x92bf5c88 NSAppleEventManagerGenericHandler + 92
22 com.apple.AE 0x91500960 aeDispatchAppleEvent(AEDesc const, AEDesc, unsigned long, unsigned char) + 208
23 com.apple.AE 0x915007fc dispatchEventAndSendReply(AEDesc const, AEDesc*) + 44
24 com.apple.AE 0x91500654 aeProcessAppleEvent + 284
25 com.apple.HIToolbox 0x932be2e0 AEProcessAppleEvent + 60
26 com.apple.AppKit 0x937a090c DPSNextEvent + 856
27 com.apple.AppKit 0x937a03f8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 116
28 com.apple.AppKit 0x9379c93c -[NSApplication run] + 472
29 teeworlds 0x000893a0 CustomApplicationMain + 568
30 teeworlds 0x000899cc main + 376
31 teeworlds 0x000023d4 _start + 760
32 teeworlds 0x000020d8 start + 48

Colored effect for teamplay

Instead of having a team color (blue), effects should be either selected to have team neutral color or have team variants.

map info in the maps

the new map format should have support for some smaller info in them like author, descriptions, suggested players and gamemode.

Input bug, tee stop moving

ghost91 : i smply move around, and suddenly does not move in the direction im pressing anymore, i have to release the key, and then press it again to get the tee moving again.it'S very anoying when playing....you move, and suddenly the tee won't move anymore..

Site content

We need site content;

  1. Extensive information about the game, history etc.
  2. Deeper information for each platform for the download pages.
  3. Information and pictures of all weapons.
  4. Boot Camp with basic information on how to play the game, keys etc.
  5. Something on the HOME page (index.html), this is important since it's the first
    thing you see when you enter the page. A news or blog flow is still
    intended but will be smaller in a column next to the index content.

Bind bugs

another bug really weird which change the binds: write a lot of characters in the console (F1), then come back to the game => you can't move because the binds arn't correct http://reivax2.free.fr/bug/screenshot00006.png, after writing into the console when I try to bind "e" it put &70 rev[2255]

Harmonize font sizes across resolutions

Example: The server name in the server list has inconsistent width, depending on resolutions used. These are sample data, for reference.

1024: 50 chars 1280: 36 chars

wavpack detection

We right now supply the tiny decoder for unpacking wavpack files. Some systems like gentoo etc want to use their system version (4.5.1). Do some auto detection for this and support the different versions of the API or perhaps update our tiny decoder to a newer version. Different API version handling would be the nicest of these two options.

Too big textures

Bug with big textures on some graphic cards / driver. Teeworld should check for GL_MAX_TEXTURE_SIZE and then respect it.

Add pause command

For clan wars could be cool to be able to freeze the game if a member disconnect of whatever.

More terrain types in basic tileset

some ideas:
* outdoor tall grass, dirt, rock
* indoor: dirt, rock, bedrock (pillars and stalactites for doodads?)
* trees with huge, walkable branches (for outdoor platforms)

Keep rcon authentication

Keep the rcon authentication after a player log out from the server. So it's not needed to log in after every rejoining.

Create a tutorial map/gametype

create a tutorial map which explains the moves and possibilities of gameplay.

*      either just a map with checkpoints which explains each action (with graphics)
*      or additionally a gametype "tutorial" which determines if a lesson was accomplished successfully and then continues with next lesson

Hook prediction bug

@SushiTee? • if u have a high ping and u hook someone... the client knows u grabbed someone and its predicting the hook as if u hooked someone but the hooked player is not predicted so the hookg get slowly to u but the hooked player doesnt move at all

I can has decals plz

vill ju ha färgstänk på banan också... =)
teetow: mjo.. tänkt på det
sen nar vi har lik
nåt lär vi ha
är lite disorienterande när de bara försvinner
ett plopp, färgstänk och nån liten blobb som sakta sjunker ihop
sätt en ticket för decals till Next Big Thing

App folder and config support

In OSX, a application is bundled into an appfolder. This gives teewars a problem because a appfolder has only one app, and one data directory. We need to figure out a way to share the data between teewars and teewars_srv.

Also, the config is currently stored in the application directory, which the user might not have write permissions to.

Player collision exploit causes insanely high jump

Steps to reproduce:

* Player 1 stands in a corner, with free space above him. * Player 2 jumps on top of player 1 and waits a few seconds. He's now "resting" on top of player 1. * Player 2 jumps. With a certain timing, he gains warp speed and jumps two or three full screens in the air.

It's fun, but should probably be fixed =)

Add race game mode.

YES! We will have it.

  • No player collision or weapons.
  • Must be time limited. ~10 minutes should be good.
  • During the time, players race to get the fastest time.
  • Players can reset at anytime using a button, taking them back to the start with a count down to start race.
  • The player with the fastest lap wins.

Copy/paste

Would be cool to be able to copy/paste in console (for ip)

Implement stricter panning laws

The stereophonic field should be roughly 1 - 1.5 screens wide, meaning a sound playing just off the edge of the screen should be audibly panned (about 80/20). This applies to all "world" sounds.

The only exception is sounds played in "head space" (GUI, hit plonk, player gunplay etc) - these should always be centered, since they are considered to origin from the player.

Removing and ordering of addvotes

For example remove_vote [value{0-n}] removes the selected entry and order_vote [from{0-n}] [to{0-n}] moves the entry to another position.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.