• Stars
    star
    489
  • Rank 89,490 (Top 2 %)
  • Language
    C#
  • License
    GNU Lesser Genera...
  • Created almost 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Blockchain in C#/.NET for on-chain, decentralized gaming

Libplanet

Discord Build Status (CircleCI) Codecov NuGet NuGet (prerelease)

Libplanet is a .NET library for creating multiplayer online game in decentralized fashion, which means the whole gameplay occurs on a peer-to-peer network among equal nodes rather than an authorized central server. Under the hood, it incorporates many features (e.g., digital signature, BFT consensus, data replication) of a blockchain.

It has competitive advantages over other solutions for decentralized gaming:

  • Embeddable: A game app does not have to communicate with another running process, hence it doesn't require extra marshaling or processes management. To draw a parallel, Libplanet is closer to SQLite than MySQL or PostgreSQL.

  • Isomorphic: Libplanet is a .NET library, so every game logic can be written in the same language, C#, and run on the blockchain. No glue code or "smart contracts" are needed.

  • Token-independent: Unlike almost every blockchain system, it does not force users to create and deal with yet-another-cryptocurrency. Your game can be free to play, and enjoyed by regular gamers.

To learn more about why Planetarium is creating technology for fully decentralized games, please refer to our blog post.

NuGet

For every stable release, we pack Libplanet into a .nupkg and upload it to NuGet and GitHub releases page. (You can find the changelog for versions from releases page.) To use Libplanet in your game, your project needs to add a dependency to Libplanet package. On Visual Studio IDE, run the following command in Package Manager Console:

Install-Package Libplanet

If you prefer dotnet CLI run the following command instead:

dotnet add package Libplanet

See also Microsoft's docs on different ways to install NuGet package.

In addition to stable releases, we also provide pre-release packages. For every day and every merge commit, it is packed into a .nupkg and uploaded to NuGet with a hyphen-suffixed version name.

For a merge commit build, a version name looks like 0.1.0-dev.20181231235959+a0b1c2d where 20181231235959 is a UTC timestamp of the build and a0b1c2d is the first 7 hexadecimals of the Git commit hash. For a daily build, a version name is like 0.1.0-nightly.20181231+a0b1c2d.

Unfortunately, Unity currently does not support NuGet. There are some Unity plug-ins to deal with NuGet package system, and these seem immature at present. To use Libplanet on Unity, you need to manually extract Libplanet.dll from Libplanet.*.nupkg file and place it inside of your Unity project. We are acknowledging the fact Libplanet is currently not very usable together with Unity, and promise to make it better in the next few minor releases. Until then, you could try MSBuildForUnity which is experimental as of January 2020.

Build

You could build Libplanet.dll and Libplanet.Stun.dll assemblies from the source code.

The following command installs dependencies (required library packages) and builds the whole Libplanet solution:

dotnet build

Note that dotnet command is distributed together with .NET Core SDK.

If you'd like to contribute code to the Libplanet project in earnest, please read our contributor guide.

More Repositories

1

NineChronicles

Unity client application for Nine Chronicles, a fully decentralized idle RPG powered by the community.
C#
331
star
2

9c-launcher

Nine Chronicles Launcher
TypeScript
44
star
3

NineChronicles.Headless

A headless node of NineChronicles game network, powered by Libplanet.
C#
34
star
4

planet-clicker

Libplanet-based sample clicker game
C#
29
star
5

lib9c

Lib9c is a library that contains key implementations of Nine Chronicles, a decentralized RPG developed with Libplanet. Lib9c includes Nine Chronicle's key features like in-game decisions and data models, which can be used to implement game core capabilities.
C#
19
star
6

libplanet-explorer-frontend

Libplanet Explorer Frontend
TypeScript
16
star
7

xunit-unity-runner

Run Xunit tests on Unity player
C#
15
star
8

bencodex

Bencodex: Bencoding Extended
14
star
9

UniLibplanet

Libplanet SDK for Unity
C#
13
star
10

NineChronicles.EthBridge

NineChronicles ⬌ Ethereum bridge
TypeScript
11
star
11

bencodex.js

An alternative take on implementing Bencodex in TypeScript/JavaScript
TypeScript
9
star
12

snack.planetarium.dev

Planetarium Engineering Snack
HTML
9
star
13

check-free-space

Checks if there are enough space in a specified path.
JavaScript
8
star
14

digital-garden

천문관 공개 전자 원예실
7
star
15

RandomXSharp

RandomX binding for .NET
C#
7
star
16

planet-node

A simple node implementation using Libplanet
C#
7
star
17

9c-infra

Infrastructure for NineChronicles
HCL
7
star
18

NineChronicles.RPC.Shared

C#
7
star
19

bencodex.net

Bencodex codec for .NET
C#
6
star
20

NCIPs

Nine Chronicles Improvement Proposal is a design document providing information to the Nine Chronicles community, or describing a new feature for Nine Chronicles software.
5
star
21

bencodex-python

Bencodex reader/writer for Python
Python
5
star
22

Telescope

A simple application to read a local blockchain storage.
C#
5
star
23

sphere

A signing library encapsulating multiple account providers to be used on Libplanet-based applications.
TypeScript
5
star
24

bencodex-viewer

Display a Bencodex tree on the web
TypeScript
5
star
25

planet-omok

Libplanet based Omok game
ShaderLab
5
star
26

lib9c-wasm

The experimental project to port Lib9c into JavaScript environment through WASM. Build your Nine Chronicles network transaction in your local at once.
C#
5
star
27

wncg-staking-interface

TypeScript
4
star
28

Cocona.Docs

A library to generate Cocona commands' documentation easily
C#
4
star
29

market-service

shop product list service for nine chronicles
C#
4
star
30

gamejam-laylas-island

C#
4
star
31

web9c

Reference frontend app to demonstrate JS libraries on Nine Chronicles / Libplanet.
TypeScript
4
star
32

9c-metric-dash

Python
4
star
33

NineChronicles.DataProvider

C#
4
star
34

changelog-check

Check if a push or a pull request contains self-describing changelog
Python
4
star
35

talks

Talks we gave
4
star
36

9c-k8s-config

Nine Chronicles kubernetes config yaml
Python
3
star
37

gamejam-isekai

C#
3
star
38

Flawless

Turn-based roguelike game for 2022 Planetarium hackathon.
C#
3
star
39

homebrew-brew

Planetarium's tap for Homebrew
Ruby
3
star
40

submodule-updater

Submodule Updater
Python
3
star
41

blackjack

C#
3
star
42

cosmwasm-research

Build playable decentralized game examples based on cosmos-SDK and cosmwasm
TypeScript
3
star
43

coincurve-stubs

Stubs, i.e., type information, for Coincurve
Python
3
star
44

libplanet-seed

C#
2
star
45

NineChronicles.HttpGateway

An application to provide HTTP API from NineChronicles RPC server
C#
2
star
46

NineChronicles.RPC.RelayServer

gRPC relay server for NineChronicles
C#
2
star
47

NineChronicles.IAP

Nine Chronicles In-app Purchase Service
Python
2
star
48

9c-headless-metric-gql-aggregator

Python
2
star
49

world-boss-service

world boss service
Python
2
star
50

9c-board

A beautiful board web application to see Nine Chronicles, like op.gg
TypeScript
2
star
51

ninechronicles-devforum

TBD
2
star
52

minority-game

ShaderLab
2
star
53

Voyager

Von voyage to libplanet's network
C#
2
star
54

Corvette

An EVM event monitoring and indexing service.
TypeScript
1
star
55

mothership-l2launcher

TypeScript
1
star
56

NineChronicles.BscBridge

TypeScript
1
star
57

9c-table-patcher

Patch & Sign Nine Chronicles table csv data
Svelte
1
star
58

Planetarium.Crypto

Cryptographic library for .NET Framework 3.5
C#
1
star
59

9c-toolbelt

python scripts for github action CI
Python
1
star
60

libplanet-unity-template

Template for Libplanet.Unity
C#
1
star
61

.github

1
star
62

daily-reward-app

A project for task to implement signing Progressive Web Application with sphere
TypeScript
1
star
63

9c-dash

Python
1
star
64

cdk8s-lib

cdk8s definitions of application used by @planetarium
TypeScript
1
star
65

godot-planet-clicker

C#
1
star
66

9c-headless-metric-log-aggregator

Dockerfile
1
star
67

NineChronicles.SeasonPass

Season pass service of Nine Chronicles
Python
1
star
68

NineChronicles.Arena

Arena Service for NineChronicles
Python
1
star
69

wncg-staking

wncg staking
JavaScript
1
star
70

bencodex-rs-exam

C#
1
star
71

awesome-9c

A curated list of NineChronicles software and resources
1
star
72

NineChronicles.Bridge.API

`planetarium/NineChronicles.Bridge`'s API
TypeScript
1
star
73

Unithereum

Ethereum integration package for Unity.
C#
1
star
74

staking_contract_wncg_eth

Staking Contract - WNCG on ETH
HTML
1
star
75

plds

JavaScript
1
star