GithubHelp home page GithubHelp logo

base's Introduction

OpenSoldat

OpenSoldat is a unique 2D (side-view) multiplayer action game. It has been influenced by the best of games such as Liero, Worms, Quake, Counter-Strike, and provides a fast-paced gaming experience with tons of blood and flesh.

This repository contains the source code of the so-called 1.8 version. Compared to the original version, the code has undergone many changes but is not in a finished state. We hope that by open-sourcing Soldat we can empower our community to improve the game at a faster pace.

Dependencies

Building OpenSoldat

OpenSoldat compiles on Windows, Linux and macOS.

Compilation using CMake

This approach automates some build steps. OpenSoldat's assets will be downloaded for you, and you will not have to worry about downloading pre-built libraries. This is the simplest way to build OpenSoldat for Linux.

CMake 3.14+ is required.

Build steps for Linux (Ubuntu)

  1. sudo apt-get install build-essential g++ cmake git fpc libprotobuf-dev protobuf-compiler libssl-dev libsdl2-dev libopenal-dev libphysfs-dev libfreetype6
  2. mkdir build && cd build
  3. cmake ..
  4. make

Build steps for Windows

  1. Install freepascal 3.2.2
  2. Install Visual Studio with C++ compiler/build tools and vcpkg
  3. Open Developer command prompt for Visual Studio
  4. vcpkg.exe --triplet x64-windows install sdl2 physfs openssl protobuf freetype openal-soft
  5. set PATH=%PATH%;C:\fpc\3.2.2\bin\i386-win32
  6. set OPENSSL_ROOT_DIR=C:\vcpkg\installed\x64-windows
  7. set PHYSFSDIR=C:\vcpkg\installed\x64-windows
  8. mkdir build
  9. cd build
  10. cmake -G "NMake Makefiles" -DCROSS_WINDOWS_64=1 -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DSDL2_BUILDING_LIBRARY=1 ..
  11. nmake

Build steps for macOS

  1. brew install openssl@3 protobuf fpc cmake sdl2 physfs freetype2
  2. mkdir build && cd build
  3. export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/openssl@3/lib/pkgconfig
  4. cmake -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3) ..
  5. make

Available flags

The build can be customized by passing flags to cmake command. For example, you can choose whether you want to build the client, the server, or both. You can decide if you want to include OpenSoldat's assets in the build. There are also options for cross-compilation.

Check the CMakeLists.txt files in this repository to see the available options and their default values.

Example: cmake .. -DCMAKE_BUILD_TYPE=Release -DADD_ASSETS=1 -DBUILD_CLIENT=0 to get a release build of the server with OpenSoldat's assets

Compilation using other methods

If you decide to follow the approaches below, you will have to download OpenSoldat's assets and pre-built libraries for the game to work.

  1. Download pre-built libraries. The best way would probably be to download libraries from the latest build of OpenSoldat (from Github Actions, or Releases). You can download latest from here (includes libraries for 3 platforms - pick the ones you need) 2. Copy libraries to client/build and server/build
  2. Get soldat.smod file from base repository. You can either download the file from the latest release (recommended), or generate the .smod file yourself following the provided instructions
  3. Copy soldat.smod file to client/build and server/build
  4. Download play-regular.ttf file from base repository from the latest release
  5. Copy play-regular.ttf file to client/build

Compilation using Lazarus IDE

  1. Install Lazarus IDE
  2. Open server/opensoldatserver.lpi with Lazarus, press CTRL + F9 to compile the server
  3. Open client/opensoldat.lpi with Lazarus, press CTRL + F9 to compile the game client

Running OpenSoldat

You need to start the server first, and then join the game with client.

  1. Run opensoldatserver
  2. Run opensoldat -join 127.0.0.1 23073 (more generically -join ip port)

base's People

Contributors

brandougherty avatar furai avatar helloer avatar mologie avatar rzaba0 avatar shoozza avatar urraka 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

Watchers

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

base's Issues

Descent explosion

I know that popular 'explode.gif' that's been on "free graphics" websites in the 90s had been used in Soldat since the start, and is currently still present in a modified, upscaled form. The old gif had been made from Descent sprite rips so there's still some 1994 copyrighted baggage from that.

All I can suggest for resolving this, is rendering a new set of explode .pngs in Blender using a quick 'smoke' simulation, though it's a bit difficult to recreate good 'pyromania' quality results with it...

Missing sceneries

Inspired by #20 I /nextmapped through all 100 maps with -log_level 1, and some sceneries failed to load. A lot of them are due to case sensitivity issues, .BMP vs .bmp, .PNG vs .png. If we are able to load sceneries in a case-insensitive way (can't think of any reason why not right now) then the remaining list of missing sceneries is:

scenery-gfx/amb_cloud_msk.png
scenery-gfx/bnw_grass.bmp
scenery-gfx/bnw_junglebush.bmp
scenery-gfx/bnw_liana3.bmp
scenery-gfx/branches.png
scenery-gfx/bridge.png
scenery-gfx/cbble_railing.bmp
scenery-gfx/celtic_fracture.png
scenery-gfx/fx_vtt_smoke_11.png
scenery-gfx/gd2_bushes.bmp
scenery-gfx/gd2_grass1.bmp
scenery-gfx/gd2_grass2.bmp
scenery-gfx/gd2_grass3.bmp
scenery-gfx/gd4_grass2.png
scenery-gfx/gothic_elk_1.png
scenery-gfx/gothic_forest_1.png
scenery-gfx/Grave Nowar.bmp
scenery-gfx/Gravestone2.bmp
scenery-gfx/Grave tn.bmp
scenery-gfx/hell_zaun.bmp
scenery-gfx/HoDBloodSplatter.png
scenery-gfx/int_flak88.bmp
scenery-gfx/Kamitankbig.PNG
scenery-gfx/L1R_shd_twinlight.png
scenery-gfx/liana do flag.bmp
scenery-gfx/light.bmp
scenery-gfx/rsf_cloud2.png
scenery-gfx/rsf_crack1.png
scenery-gfx/rsf_crack2.png
scenery-gfx/rsf_crack3.png
scenery-gfx/ss_BLOOD.PNG
scenery-gfx/st-grave2.bmp
scenery-gfx/st-gravecard2.bmp
scenery-gfx/TDT_0089.png
scenery-gfx/tree11.bmp
scenery-gfx/tw_anoxi_treescape_2.png
scenery-gfx/tw_coldmorning_fbg_1.png
scenery-gfx/veg_bush_10.png
scenery-gfx/veg_bush_16.png
scenery-gfx/veg_bush_37.png
scenery-gfx/veg_bush_38.png
scenery-gfx/veg_bush_39.png
scenery-gfx/veg_dead_12.png
scenery-gfx/veg_dead_13.png
scenery-gfx/veg_dead_21.png
scenery-gfx/veg_dead_4.png
scenery-gfx/veg_grass_1.png
scenery-gfx/wall1.png

I've got a good amount of these lying in my C:\Soldat folder so I will probably be able to track them down without much issue.

Are the media files Free Cultural Works?

Are the media files of Soldat Free Cultural Works?
https://freedomdefined.org/Definition

I mean with that:

Is ALL of Soldat open-source, or only the engine source code?

Do you license the game media files under a license that permits these things?:

  • the freedom to use the work and enjoy the benefits of using it
  • the freedom to study the work and to apply knowledge acquired from it
  • the freedom to make and redistribute copies, in whole or in part, of the information or expression
  • the freedom to make changes and improvements, and to distribute derivative works

3 missing files in interface-gfx folder

When running client with log_level cvar set to 1, you can see that it fails to load 3 files from interface-gfx folder:

[PhysFS] Loading file interface-gfx/friend.bmp
[GFX] Failed to load image interface-gfx/friend.bmp
[PhysFS] Loading file interface-gfx/mic.bmp
[GFX] Failed to load image interface-gfx/mic.bmp
[PhysFS] Loading file interface-gfx/connection.bmp
[GFX] Failed to load image interface-gfx/connection.bmp

We need 3 files (despite the .bmp extension in logs, client can also load from .png):

  • friend.png
  • mic.png
  • connection.png

friend.png and mic.png are only used in Steam builds. connection.png is displayed in F1 menu, and I think it's meant to show connection quality.

Ambigious README with regards to copyright

I'm very sorry to bother you again about copyright, and it's actually more like a nitpick: Here's a friendly note that the current README is a little ambigious:

CC BY 4.0

Soldat and all the file formats the program produces are Copyright © 2001-2018 Michal Marcinkowski. All rights reserved.

You can't be CC BY and “All rights reserved” at the same time. While I believe the phrase “All rights reserved” has no legal meaning, it can be very confusing to most. With CC BY you give up some of the rights of copyright, but “All rights reserved” (usually) means you give no of the rights, which, of course, is incompatible with Creative Commons. I'm sure you meant the CC BY, but for outsiders it might be not so obvious. https://en.wikipedia.org/wiki/All_rights_reserved

Since you intended to use CC BY, I suggest to remove the phrase “All rights reserved” from the README to resolve the confusion.

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.