All Projects → planetarium → NineChronicles

planetarium / NineChronicles

Licence: AGPL-3.0 license
Unity client application for Nine Chronicles, a fully decentralized idle RPG powered by the community.

Programming Languages

C#
18002 projects
ShaderLab
938 projects
HLSL
714 projects
python
139335 projects - #7 most used programming language
GLSL
2045 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to NineChronicles

NexusForever.WorldDatabase
The optional world database for NexusForever.
Stars: ✭ 19 (-92.91%)
Mutual labels:  mmorpg
Chatangle
A free, decentralized, global chatroom, powered by the IOTA tangle
Stars: ✭ 16 (-94.03%)
Mutual labels:  decentralized
awesome-radical-decentralization
Awesome projects for radical decentralization.
Stars: ✭ 84 (-68.66%)
Mutual labels:  decentralized
Nero-Game-Engine
Advanced SFML Game Engine, Designed to be Simple and Intuitive
Stars: ✭ 50 (-81.34%)
Mutual labels:  2d-game
blockstack-browser
The Blockstack Browser
Stars: ✭ 1,130 (+321.64%)
Mutual labels:  decentralized
hopr-core
Main repository of HOPR - this is all you need to run a node on the HOPR network!
Stars: ✭ 14 (-94.78%)
Mutual labels:  decentralized
docs
Unleash Bitcoin's full potential with decentralized apps and smart contracts. The documentation covers key aspects of the Stacks network and technology and provides tutorials and other helpful content for developers.
Stars: ✭ 134 (-50%)
Mutual labels:  decentralized
jdrive
OpenTTD port to Java
Stars: ✭ 23 (-91.42%)
Mutual labels:  2d-game
LOL2D-ver1
League Of Legends in 2D - Web Game
Stars: ✭ 27 (-89.93%)
Mutual labels:  2d-game
scan
DeFi Scan, everything one-stop location for DeFi Blockchain. Powered by jellyfish & ocean network.
Stars: ✭ 31 (-88.43%)
Mutual labels:  decentralized
pocket-js
The Official Javascript Client of the Pocket Network
Stars: ✭ 26 (-90.3%)
Mutual labels:  decentralized
dispersy
The elastic database system. A database designed for P2P-like scenarios, where potentially millions of computers send database updates around.
Stars: ✭ 81 (-69.78%)
Mutual labels:  decentralized
darkmall
Incomplete example of free market running on ETH blockchain for educational purposes only
Stars: ✭ 51 (-80.97%)
Mutual labels:  decentralized
trinitycore
Moved to https://gitlab.com/nicolaw/trinitycore
Stars: ✭ 29 (-89.18%)
Mutual labels:  mmorpg
sprawl
Alpha implementation of the Sprawl distributed marketplace protocol.
Stars: ✭ 27 (-89.93%)
Mutual labels:  decentralized
goblins-game-gd
Turn based strategy game made with Godot Engine.
Stars: ✭ 68 (-74.63%)
Mutual labels:  2d-game
ipfs-pubsub-chatroom
Simple IPFS Pubsub chatroom built on React
Stars: ✭ 45 (-83.21%)
Mutual labels:  decentralized
WindFarm
Information the Wind concept, spec and upcoming events
Stars: ✭ 23 (-91.42%)
Mutual labels:  decentralized
skulls
💀 💀 💀 s k u l l s 💀 💀 💀
Stars: ✭ 35 (-86.94%)
Mutual labels:  2d-game
rscplus
RuneScape Classic client mod & preservation platform
Stars: ✭ 29 (-89.18%)
Mutual labels:  mmorpg

Nine Chronicles

Nine Chronicles Banner

CircleCI Discord Planetarium-Dev Discord Invite

Nine Chronicles is a fully open-sourced online RPG without servers — like Bitcoin or BitTorrent, the gamers and miners connect to each other to power a distributed game network. Set in a vast fantasy world, it is governed by its players, and supported by a complex economy where supply and demand are the greatest currency.

Decentralized infrastructure has created new possibilities for online gaming, where communities can become the actual owners of an online world. By fully open sourcing the repositories for Nine Chronicles, players and developers alike can use any part of the game, from the beautiful bespoke 2D assets to in-game logic and code.

To learn more about the codebase and the GraphQL API, visit docs.nine-chronicles.com.

Dependency

Installation

  1. Install Unity Hub
  2. Install Unity 2021.3.5f1 version
  3. Clone repository
    git clone https://github.com/planetarium/NineChronicles.git
    
  4. Navigate to the cloned directory and run the command:
    git config core.hooksPath hooks
    git submodule update --init --recursive
    
  5. Run Unity and build project

To launch Nine Chronicles from the Unity editor, please follow the step-by-step guide.

Command Line Options

  • --private-key : private key to use.
  • --keystore-path : path to store private key.
  • --host : host name.
  • --port : port name.
  • --no-miner : disable mining.
  • --peer : add peer. Multiple peers can be added with --peer peerA peerB ... .
  • --ice-servers : TURN server information used for NAT traversal. Multiple servers can be added with --ice-servers serverA serverB.
  • --genesis-block-path: path of genesis block. Supports http(s) paths and uses Assets/StreamingAssets/genesis-block if not provided.
  • --storage-path : path to store chain data.
  • --storage-type : storage type name. Currently supports RocksDBStore (--storage-type rocksdb).
  • --rpc-client : starts client mode that does not store chain data.
  • --rpc-server-host : rpc server host name.
  • --rpc-server-port : rpc server port name.
  • --auto-play : automatically generate character and enter battle stage in the background.
  • --console-sink : print logs on console.
  • --development : run in development mode. Shows debugging UI and log level configuration.

Using Command Line Options on Unity Editor

To use the above command line options on Unity Editor or on build player, Assets/StreamingAssets/clo.json must be created. Below is an example:

{
   "privateKey": "",
   "host": "127.0.0.1",
   "port": 5555,
   "noMiner": true,
   "peers": ["02ed49dbe0f2c34d9dff8335d6dd9097f7a3ef17dfb5f048382eebc7f451a50aa1,nekoyume1.koreacentral.cloudapp.azure.com,58598"]
}
  • Assets/StreamingAssets/clo.json is excluded from version control.
    • Assets/StreamingAssets/clo_nekoalpha_nominer.json could be provided as a preset. To use this file, change the name to clo.json.

Command Line Build

$ /UnityPath/Unity -quit -batchmode -projectPath=/path/to/nekoyume/ -executeMethod Editor.Builder.Build[All, MacOS, Windows, Linux, MacOSHeadless, WindowsHeadless, LinuxHeadless]
  • Example
$ /Applications/Unity/Hub/Editor/2021.3.5f1/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath=~/planetarium/nekoyume-unity/nekoyume/ -executeMethod Editor.Builder.BuildAll

Editor Build

Use the Build menu on the Unity Editor.

Peer Configuration

Reading Order

Peer options for network communication is read in the following order:

  1. Command Line parameter upon execution (--peer)
  2. (On Windows) peers.dat in %USERPROFILE%\AppData\LocalLow\Planetarium
  3. Assets\Resources\Config\peers.txt inside NineChronicles project.

Since the current project doesn't include option 3, the game will run in a single node if peer configuration in either option 1 or 2 are not provided.

Format

Peer list is stored in plain text format and each line includes a node's publickey,host-name,port,version.

Ex)

   02ed49dbe0f2c34d9dff8335d6dd9097f7a3ef17dfb5f048382eebc7f451a50aa1,nekoyume1.koreacentral.cloudapp.azure.com,58598
   02d05be62f8593721f5abfd28fb83c043ed9d9585f45b652cb67fd6eee3fd3748f,nekoyume2.koreacentral.cloudapp.azure.com,58599
  • Host name and port must be public.
    • If --host is not provided upon execution, the actual host name and port could be different from the original due to the automatic relay communication via STUN/TURN. Therefore, nodes that are used as peers on other nodes must provide its --host option on execution.
  • Public key is a hexadecimal string derived from the PrivateKey that is used to create a Swarm object.

Docker-compose Miner Test

Seed private key and node host are hardcoded for local testing purposes.

  • Build LinuxHeadless and run the command below:
cd nekoyume/compose
docker-compose up --build

Auto Play Option

--auto-play option can be used to generate character and automate battle stages in the background. Currently, character's name is generated with the first 8 characters of the node's Address and repeats stage 1 battle at the TxProcessInterval.

Console Sink Option

--console-sink option can send logs via UnityDebugSink instead of ApplicationInsights.

White List

You can use nekoyume/Assets/AddressableAssets/TableCSV/Account/ActivationSheet.csv to manage white lists.

id,public_key
1,029d256bc6943cd9d18712b1fe1fdd061705d2ffa644a7705b3cf90f408d1ee278

If PublicKeys are registered in ActivationSheet.csv, only transactions that have been signed with the PrivateKeys of those PublicKeys can be mined.

White list feature will not be activated if there are no PublicKeys registered in ActivationSheet.csv.

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