All Projects → symphony-of-empires → symphony-of-empires

symphony-of-empires / symphony-of-empires

Licence: GPL-2.0 License
Symphony of the Empires is a RTS strategy game and map game.

Programming Languages

lua
6591 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to symphony-of-empires

MyRTS
Multiplayer RTS game prototype written in Java using LibGDX
Stars: ✭ 17 (-74.63%)
Mutual labels:  multiplayer, rts, rts-game
Evennia
Python MUD/MUX/MUSH/MU* development system
Stars: ✭ 1,309 (+1853.73%)
Mutual labels:  gamedev, multiplayer
Projectfieldwarning
Project: Field Warning is a community-made RTS game centered around lethal regiment and division-scale warfare.
Stars: ✭ 86 (+28.36%)
Mutual labels:  gamedev, rts
Kaetram Open
An open-source 2D HTML5 adventure based off BrowserQuest (BQ).
Stars: ✭ 138 (+105.97%)
Mutual labels:  gamedev, multiplayer
Librg
🚀 Making multi-player gamedev simpler since 2017
Stars: ✭ 813 (+1113.43%)
Mutual labels:  gamedev, multiplayer
Mdframework
A multiplayer C# game framework for Godot 3.2 Mono.
Stars: ✭ 34 (-49.25%)
Mutual labels:  gamedev, multiplayer
Reldens
Reldens - You can make it - Open Source MMORPG Platform
Stars: ✭ 130 (+94.03%)
Mutual labels:  gamedev, multiplayer
Ancientbeast
Turn Based Strategy Game. Master your beasts! 🐺
Stars: ✭ 907 (+1253.73%)
Mutual labels:  multiplayer, strategy
WarKingdoms
Unity RTS Prototype (Warcraft 3 Style)
Stars: ✭ 108 (+61.19%)
Mutual labels:  rts, rts-game
UnityTutorials-RTS
The code for my series of tutorials on how to make a real-time stategy (RTS) game in the well-know Unity game engine (with C# scripting)!
Stars: ✭ 256 (+282.09%)
Mutual labels:  rts, rts-game
war1
A remake of Warcraft: Orcs & Humans written in C
Stars: ✭ 107 (+59.7%)
Mutual labels:  rts, rts-game
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+877.61%)
Mutual labels:  gamedev, multiplayer
Game Networking Resources
A Curated List of Game Network Programming Resources
Stars: ✭ 4,208 (+6180.6%)
Mutual labels:  gamedev, multiplayer
Lance
Multiplayer game server based on Node.JS
Stars: ✭ 1,161 (+1632.84%)
Mutual labels:  gamedev, multiplayer
Warzone2100
Command the forces of The Project in a battle to rebuild the world after mankind has been nearly destroyed by nuclear missiles. A 100% free and open source real-time strategy game for Windows, macOS, Linux, BSD+
Stars: ✭ 2,094 (+3025.37%)
Mutual labels:  multiplayer, rts
Entitas Sync Framework
Networking framework for Entitas ECS. Targeted at turnbased games or other slow-paced genres.
Stars: ✭ 98 (+46.27%)
Mutual labels:  gamedev, multiplayer
Knights province
Knights Province missions and wiki.
Stars: ✭ 43 (-35.82%)
Mutual labels:  strategy, rts
Crystalshire
Legacy VB6 open-source ORPG
Stars: ✭ 24 (-64.18%)
Mutual labels:  gamedev, multiplayer
Svg World Map
🗺 A JavaScript library to easily integrate one or more SVG world maps with all nations (countries) and second-level political subdivisions (countries, provinces, states).
Stars: ✭ 38 (-43.28%)
Mutual labels:  map, strategy
com.unity.multiplayer.samples.coop
A small-scale cooperative game sample built on the new, Unity networking framework to teach developers about creating a similar multiplayer game.
Stars: ✭ 794 (+1085.07%)
Mutual labels:  gamedev, multiplayer

Symphony of the Empires

Screenshot_from_2021-12-25_01-25-26

Want to contribute or are interested in the development of the game? See our discord https://discord.gg/44QuvuDmCS

This is an Opensource RTS game engine; created to be very mod-friendly.

Required to build:

  • SDL2 and SDL2-ttf
  • lua 5.3 (or 5.4)
  • GL and GLU
  • libavcodec (on most package managers it's ffmpeg)

Build on Linux

Debian-based distros

Install all dependencies with this command:

sudo apt install -y libpng-dev libsdl2-dev libsdl2-ttf-dev liblua5.3-dev libtbb-dev libglew-dev libglm-dev libassimp-dev

The build with these commands once all the dependencies are met:

cmake -DUR_BACKEND_OPENGL=1 .
make

Specifying -j to make will freeze systems, use -j$(nproc) instead, if a multithreaded compilation is desired.

Use this code to install Lua5.4

wget http://mirrors.kernel.org/ubuntu/pool/universe/l/lua5.4/liblua5.4-0_5.4.0-2_amd64.deb
sudo dpkg -i liblua5.4-0_5.4.0-2_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/l/lua5.4/liblua5.4-dev_5.4.0-2_amd64.deb
sudo dpkg -i liblua5.4-dev_5.4.0-2_amd64.deb

Alternatively, you can call cmake with the flag -Dlua54:BOOL=ON to compile with Lua 5.4 - since 5.3 is used by default.

The project can also be built using clang.

Arch-based distros

pacman -S libpng sdl2 sdl2_ttf tbb glew lua53 glm

Build on Windows

MSYS2

Once msys2 has been installed for the first time, you'll have to run the following commands to install essential development packages:

pacman -Syu
pacman -Su

Simply run the following after setting up the initial msys environment:

pacman -S mingw-w64-SDL2_ttf mingw-w64-SDL2 mingw-w64-lua mingw-w64-zlib

# Try this one if the above does not work
pacman -S mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL2 mingw-w64-x86_64-lua mingw-w64-x86_64-zlib

On 32-bit systems the following is required:

pacman -S mingw-w64-i686-SDL2_ttf mingw-w64-i686-SDL2 mingw-w64-i686-lua mingw-w64-i686-zlib

Finally; to build you only have to run:

cmake -G"Unix Makefiles" -DUR_BACKEND_OPENGL=1 .
make

Visual Studio

Builds can be built using Visual C compiler. The trick is to create a new solution and place everything there, add src and src\client as include folders and use NuGet to obtain the required dependencies, then define the macro windows.

Running

In order to run the game you just need to run it via the command line or left-click the executable:

./game

If the server crashes and the port needs to be re-aquired do the following under *NIX systems:

fuser -k 1836/tcp

Coding style

4-spaces are used, tabs should be replaced with 4-spaces too. All functions, members and variables follow a snake_case convention; whereas the object-typenames and types should be done as CamelCase.

Object declaration

Class members on declarations should be ordered, starting by the private section, followed by the protected section, to finally conclude on the public section. Each section should first start by the "main-constructor", followed by copy-constructors and any variant of the constructors; after it, follows the destructor of the object. Then follows the main methods of the object. Methods don't need to have a specific order. After the methods all the remaining member data is appended. Members don't need to have a specific order.

In short - all functions for classes should be conformed as this:

class Foo {
    // private constructors/destructors
    Foo(const Bar&);

    // followed by private methods
    int add_cmpxchg(int&&);

    // finally by the private data
    int secret_value;
protected:
    // constructor, copy-constructor & variants, destructor
    Foo(const Bar*);

    // methods
    int add_cmpxchg_sse3(void);

    // members
    int stuff;
public:
    Foo();
    // here should be any variant of constructor function prototypes
    ~Foo();

    // rest of the functions
    explicit int add(int&, int&);

    // and finally the data
    int value;
};

Blocks

Simply put:

while(a) {
    if(b) {
        // stuff...
    } else if(c) {
        // stuff...
    }

    // no "single line" or brace-less ifs
    if(d < 0) {
        increment_d(&d);
    }
}

Naming convention

Classes, Structs, Types and Typenames are named in PascalCase, while variables, struct/method members and functions are declared using snake_case. Enum members and macros are declared in SCREAMING_SNAKE_CASE.

struct FooBar {
    FooBar() {};
    ~FooBar() {};

    int method(void) {
        return 0;
    };

    template<typename T1 = int, typename T2 = int>
    int add(T1 a, T2 b) {
        return a + b;
    };
public:
    int member;
    int test_thing;
    bool is_attack;
};
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].