LeagueSandbox
DotNet port and continuation of IntWars
Project chat on Discord: https://discord.gg/Bz3znAM
Project repositories
Contributing
We're looking for people interested in contributing to the project. Currently the technologies we use include:
- C#
- Electron
- Node.js
- Vue
- Socket.io
If you're interested in contributing, come find us from Discord and let us know
Documents and specifications
C# guidelines
- Function names in
CamelCase
- Constants in
ALL_CAPS
- Private variables in
_pascalCaseWithUnderscore
- Public properties as getters / setters in
CamelCase
- All public variable access should happen through getters / setters
Custom content data structure
Data
LeagueSandbox-Default // A content package by "LeagueSandbox" called "Default"
Champions
Items
Buffs
...
SomeAuthor-SomePackage // A content package by "SomeAuthor" called "SomePackage"
Champions
...
GameMode
LeagueSandbox-Default // Game mode by "LeagueSandbox" called "Default"
Data // Data that's local to this gamemode only
Champions
Items
Buffs
...
Scripts // Game mode related logic
SomeScript.lua
SomeOtherScript.lua
...
GameMode.json // Game mode configuration file
-
Two kinds of packages
-
Data packages
- Contain data and logic for things such as champions, items, buffs, etc...
-
Game mode packages
- Contain configuration and logic for the gamemode
- Configuration that determines what data this mode depends on
-
Data packages
-
Data should be stored in JSON files
- So for example, damage, range, health, etc...
-
Logic should be stored in lua files
- Lua is capable of using the data stored in the mentioned JSON files
-
These two should be always separate, so no mixing data into lua
- All predetermined values in JSON
-
Packages are to be named using a {author}/{package} format
- This to avoid collisions with similarly named packages
- Content will be identified in a {author}/{package}/{type}/{name} format, thus why namespacing is required
Planned overall configuration/infrastructure
5 different components:
-
League of Legends 4.20 Client
- By Riot
- Will be modified only by the client patcher
-
Content serializer
- Patches custom content into the game client's files
- Serializes custom content into a format the game can understand
- Deserializes the game's content into our custom content format
- Builds single file packages out of custom content packages
-
Lobby client
- Client that can connect to lobby servers
- Game mode selection
- User settings (champion, summoner spells, etc)
-
Game mode settings (if a gamemode has configurable settings, say, kill limit for a deathmatch victory)
- Host only
- Receives custom content from the lobby server before the game is started
-
Lobby server
-
Lobby clients can create lobbies
- Lobby creator gets host privileges
- Lobby clients can connect to existing lobbies
- Sends lobby clients the gamemode specific custom content
- Takes care of launching the game server when the game is started
-
Lobby clients can create lobbies
- Game server
- Receives game settings from the lobby server
- Runs the game according to the received settings
Beta release goals
A graph of features that should be done before a beta release
Credits
Intline9 | Original creator | https://github.com/Intline9 |
Ltsstar | Contributor | https://github.com/ltsstar |
Elyotna | Old project lead | https://github.com/Elyotna |
Horato | C# port original author | https://github.com/horato |
Eddy5641 | Contributor | https://github.com/eddy5641 |
Chutch1122 | Contributor | https://github.com/chutch1122 |
Spudgy | Contributor | https://github.com/spudgy |
Mythic |
Project manager Lead developer |
https://github.com/MythicManiac |
Coquicox | Contributor | https://github.com/coquicox |
NitroXenon | Contributor | https://github.com/NitroXenon |
Fighter19 | Contributor | https://github.com/Fighter19 |
Molenzwiebel | Contributor | https://github.com/molenzwiebel |
TheWebs | Contributor | https://github.com/TheWebs |