Top Related Projects
A server software reimplementation for a certain anime game.
Quick Overview
LunarCore is an open-source server emulator for a popular anime-style game. It aims to recreate the game's server functionality, allowing players to host private servers and explore the game's content offline or in a controlled environment.
Pros
- Enables offline play and private server hosting
- Provides a platform for modding and custom content creation
- Allows for preservation of the game's content and mechanics
- Facilitates research and understanding of the game's underlying systems
Cons
- May violate the original game's terms of service
- Potential legal issues with copyright and intellectual property
- Incomplete implementation of all game features
- Requires technical knowledge to set up and maintain
Getting Started
To set up LunarCore:
-
Clone the repository:
git clone https://github.com/Melledy/LunarCore.git
-
Install dependencies (Java 17+ required):
./gradlew build
-
Configure the server in
config.json
-
Run the server:
java -jar LunarCore.jar
-
Connect to the server using a compatible game client
Note: Ensure you comply with all applicable laws and the original game's terms of service before using this software.
Competitor Comparisons
A server software reimplementation for a certain anime game.
Pros of Grasscutter
- More mature project with a larger community and contributor base
- Supports a wider range of game versions and features
- More comprehensive documentation and setup guides
Cons of Grasscutter
- Higher resource requirements and complexity
- Slower development cycle for new game updates
- May have more stability issues due to its broader scope
Code Comparison
Grasscutter (Java)
public class Player extends Entity {
private Account account;
private World world;
private Scene scene;
private Position position;
// ... more fields and methods
}
LunarCore (Kotlin)
class Player : Entity() {
lateinit var account: Account
lateinit var world: World
lateinit var scene: Scene
lateinit var position: Position
// ... more properties and functions
}
Both projects use object-oriented programming to represent game entities. Grasscutter uses Java, while LunarCore uses Kotlin, which offers more concise syntax and null safety features. The core structure of the Player
class is similar in both projects, but LunarCore's implementation may be more compact due to Kotlin's language features.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
EN | ID | ç®ä¸ | ç¹ä¸ | JP | RU | FR | KR | VI
Attention: For any extra support, questions, or discussions, check out our Discord.
Notable features
- Basic game features: Logging in, team setup, inventory, basic scene/entity management
- Monster battles working
- Natural world monster/prop/NPC spawns
- Character techniques
- Crafting/Consumables working
- NPC shops handled
- Gacha system
- Mail system
- Friend system (Assists are not working yet)
- Forgotten hall
- Pure Fiction
- Simulated universe (Runs can be finished, but many features are missing)
Running the server and client
Prerequisites
Recommended
Compiling the server
- Open your system terminal, and compile the server with
./gradlew jar
- Create a folder named
resources
in your server directory - Download the
Config
,TextMap
, andExcelBin
folders from https://github.com/Dimbreath/StarRailData and place them into your resources folder. - Run the server with
java -jar LunarCore.jar
from your system terminal. Lunar Core comes with a built-in internal MongoDB server for its database, so no Mongodb installation is required. However, it is highly recommended to install Mongodb anyway.
Connecting with the client (Fiddler method)
- Log in with the client to an official server and Hoyoverse account at least once to download game data.
- Install and have Fiddler Classic running.
- Copy and paste the following code into the Fiddlerscript tab of Fiddler Classic. Remember to save the fiddler script after you copy and paste it:
import System;
import System.Windows.Forms;
import Fiddler;
import System.Text.RegularExpressions;
class Handlers
{
static function OnBeforeRequest(oS: Session) {
if (oS.host.EndsWith(".starrails.com") || oS.host.EndsWith(".hoyoverse.com") || oS.host.EndsWith(".mihoyo.com") || oS.host.EndsWith(".bhsr.com")) {
oS.oRequest.headers.UriScheme = "http";
oS.host = "localhost"; // This can also be replaced with another IP address.
}
}
};
- If
autoCreateAccount
is set to true in the config, then you can skip this step. Otherwise, type/account create [account name]
in the server console to create an account. - Login with your account name, the password field is ignored by the server and can be set to anything.
Server commands
Server commands can be run in the server console or in-game. There is a dummy user named "Server" in every player's friends list that you can message to use in-game commands.
/account {create | delete} [username] (reserved player uid). Creates or deletes an account.
/avatar lv(level) p(ascension) r(eidolon) s(skill levels). Sets the current avatar's properties.
/clear {relics | lightcones | materials | items}. Removes filtered items from the player inventory.
/gender {male | female}. Sets the player's gender.
/give [item id] x[amount] lv[number]. Gives the targetted player an item.
/giveall {materials | avatars | lightcones | relics}. Gives the targeted player items.
/heal. Heals your avatars.
/help. Displays a list of available commands.
/kick @[player id]. Kicks a player from the server.
/mail [content]. Sends the targeted player a system mail.
/permission {add | remove | clear} [permission]. Gives/removes a permission from the targeted player.
/refill. Refill your skill points in open world.
/reload. Reloads the server config.
/scene [scene id] [floor id]. Teleports the player to the specified scene.
/spawn [npc monster id/prop id] s[stage id] x[amount] lv[level] r[radius] <battle monster ids...>. Spawns a monster or prop near the targeted player.
/stop. Stops the server
/unstuck @[player id]. Unstucks an offline player if they're in a scene that doesn't load.
/worldlevel [world level]. Sets the targeted player's equilibrium level.
Top Related Projects
A server software reimplementation for a certain anime game.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot