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