All Projects → MafiaHub → Framework

MafiaHub / Framework

Licence: other
Advanced modding framework for multiplayer modifications

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Framework

m2sdk
Software Development Kit for the Steam version of Mafia2.
Stars: ✭ 19 (-9.52%)
Mutual labels:  modding, multiplayer
HLADM
Half-Life: Alyx: Deathmatch
Stars: ✭ 24 (+14.29%)
Mutual labels:  modding, multiplayer
XLMultiplayer
Skater XL Multiplayer mod by silentbaws
Stars: ✭ 29 (+38.1%)
Mutual labels:  modding, multiplayer
MPPatch
Patch for Civilization V to allow modded multiplayer. Currently under development.
Stars: ✭ 31 (+47.62%)
Mutual labels:  modding, multiplayer
MafiaMP
Multiplayer experience for Mafia: Definitive Edition
Stars: ✭ 31 (+47.62%)
Mutual labels:  modding, multiplayer
Oxide.GettingOverItMP
A multiplayer mod for the game Getting Over It with Bennett Foddy, powered by the Oxide modding framework
Stars: ✭ 33 (+57.14%)
Mutual labels:  modding, multiplayer
FishFight
Tactical 2D shooter in fishy pixels style. Made with Rust-lang and Macroquad 🦀🌶
Stars: ✭ 631 (+2904.76%)
Mutual labels:  modding, multiplayer
OnsetLuaScripts
Example Lua scripts for Onset for you to learn from.
Stars: ✭ 57 (+171.43%)
Mutual labels:  modding, multiplayer
unity-webgl-multiplayer
Unity WebGL basic multiplayer demo using WebSockets
Stars: ✭ 43 (+104.76%)
Mutual labels:  multiplayer
Gibbed.JustCause4
Tools & code for use with Just Cause 4.
Stars: ✭ 20 (-4.76%)
Mutual labels:  modding
backgammony
A backgammon client with multiplayer support
Stars: ✭ 37 (+76.19%)
Mutual labels:  multiplayer
hacked
Graphical editor for System Shock 1 (1994 and compatible)
Stars: ✭ 69 (+228.57%)
Mutual labels:  modding
EMF
Extended Mechanics & Flavor
Stars: ✭ 33 (+57.14%)
Mutual labels:  modding
LunarGdx
A networking library for LibGDX utilizing Netty allowing easy creation of multiplayer games.
Stars: ✭ 23 (+9.52%)
Mutual labels:  multiplayer
DockRotate
Kerbal Space Program lightweight robotics with docking ports
Stars: ✭ 12 (-42.86%)
Mutual labels:  modding
Gibbed.Borderlands
Tools & code for use with Borderlands.
Stars: ✭ 44 (+109.52%)
Mutual labels:  modding
OSIS
Entity Component System with network support (for haxe)
Stars: ✭ 40 (+90.48%)
Mutual labels:  multiplayer
llapi-example
LLAPI Networking sample (Top Down Shooter)
Stars: ✭ 26 (+23.81%)
Mutual labels:  multiplayer
FFNx
Next generation modding platform for Final Fantasy VII and Final Fantasy VIII ( with native Steam 2013 release support! )
Stars: ✭ 200 (+852.38%)
Mutual labels:  modding
ashfall
Ashfall is a survival, camping and needs mod for Morrowind. It uses the latest in MWSE Lua scripting functionality to implement a wide range of mechanics that integrate seamlessly into the game and provide a truly immersive experience.
Stars: ✭ 16 (-23.81%)
Mutual labels:  modding
MafiaHub Framework
Discord server license

A suite of tools and libraries to accelerate multi-player modification development.
Brought to you by @Segfault, @zaklaus, @DavoSK, and other contributors!

Introduction

This codebase provides a suite of tools and libraries to simplify the development of multi-player modifications and ensure consistency across all of them. The primary goal is to provide a common foundation and interface, in regards to shared functionality and data. It covers many fields we found important during the development of multi-player mods, such as:

  • Networking: The core of the framework, it provides all the necessary tools to synchronize data between players.
  • ECS: Backed by a strong ECS framework that simplifies entity management and world streaming, it is also easily extensible.
  • Scripting: The Node.js scripting layer provides an easy way to create and manage resources used on game servers. It also provides a common interface accross all multi-player mods, making it easy to create and manage shared resources between games.
  • Logging: It is always important to log actions and errors, so the framework provides a simple way to do so.
  • GUI: It also provides a simple way to create and manage GUI elements using the Chromium Embedded Framework library.
  • Sentry: The framework provides a simple way to report errors and exceptions to the Sentry service.
  • Firebase: It is used to easily store and retrieve data from the Firebase service. Including stats, player data, and more.
  • Externals: Contains wrappers for various libraries and services used within the framework.
  • Integrations: Provides a simple server and client moddable setup that combines various framework components together allowing you to focus on game-specific features themselves.
  • Utils: It provides a collection of useful functions and classes that are used throughout the framework.

MafiaHub Services are NOT part of this project, but our framework provides a simple way to integrate them. Feel free to ask us for more information about this service, so we could provide the resources and a license to use it.

Contributing

We're always looking for new contributors, so if you have any ideas or suggestions, please let us know and we'll see what we can do to make it better. You can either reach us at our Discord server MafiaHub, or by raising an issue on our repository.

If you're interested in development, please read our Contribution Guidelines.

Building

We use CMake to build our projects, so you can use any of the supported build systems. We support Windows, Linux, and MacOS operating systems at the moment. You can follow this guide to get started:

First make sure your Git client supports LFS objects, visit Git LFS page for more info.

# Clone the repo
git clone https://github.com/MafiaHub/Framework.git
cd Framework

Note: If you have issues cloning the repository (Git LFS related errors), first ensure you have Git LFS support enabled. If you do and this looks to be a server issue, please contact @ZaKlaus on our Discord server to investigate it.

Build on macOS/Linux

# Configure CMake project
cmake -B build

# Build framework
cmake --build build

# Run framework tests
cmake --build build --target RunFrameworkTests

Build on Windows

Visual Studio 2022 support

Ensure you have the cmake tools installed in your copy of Visual Studio first. Open your newly cloned Framework repository folder in Visual Studio and it will automagically set up everything for you!

Things to note:

  • code/projects folder is hidden by default as it's ignored by Git, in Solution Explorer, enable Show All Files option to see your project files.
  • Changes in your project's cmake will not be auto-detected, cmake will only reload config on build, otherwise you can do it yourself in the Projects section in main menu.
  • Visual Studio 2022 embeds an old and unsupported version of ClangFormat, we highly recommend you to install LLVM tools and set up a custom ClangFormat executable in VS's Tools > Options > Text Editor > C/C++ > Code Style > Formatting > Use custom clang-format.exe file property.

CLion support

The guide on how to set up the project files for CLion is available here.

Add a multi-player project to the framework

Multi-player modifications are cloned into the code/projects directory and are automatically picked up by the framework. We use this approach so that we can easily manage the projects and their dependencies, perform mass changes and general maintenance during the development.

# Create and navigate to folder
mkdir -p code/projects
cd code/projects

# Clone a MP repo that uses the framework
git clone [email protected]:<your-awesome-username>/<your-amazing-project>.git

# e.g.
git clone https://github.com/MafiaHub/MafiaMP.git

Now you can access your targets and build them within the framework.

To exclude a project from compilation, simply create an empty file called IGNORE in the root of the project.

License

The code is licensed under the MafiaHub OSS license.

The 5th clause exists to ensure that the work can focus primarily on this repository, as we provide an access to the framework and its services. This is important to ensure that the framework is not used for other purposes, such as the creation of other projects, that would diverge from the framework. This approach guarantees that the changes are directly made to the framework itself, having a healthy ecosystem in mind.

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].