Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
NanoQuake is an implementation of Yamagi Quake 2 with Nano based transactions and customisations built in.
- It's free to download
- You can play multiplayer with the demo content files
- Its open source with an up to date client (yquake2) and also is quite well documented
- It runs on Windows, Linux and OS X
- Doesn't require too much power
Nano is ideal as its feeless and fast, ideal for small in-game payouts. It's also surprisingly easy to integrate into a system.
How Does Nano Fit In?
The server which hosts the game has its own Nano account and each player pays into this account (currently set to a 0.1 Nano buy-in). For each kill you gain a reward of Nano and at the end of the round 3rd place gets 10%, 2nd place gets 30% and 1st place gets the rest.
The quake2 server therefore tracks this server account as well as does the payouts (it uses the dPoW system to provide the necessary PoW to make these payouts near instant).
The quake2 client has its own python based light wallet, it generates a seed and an account which you top up with funds (say 0.5 Nano), you can then use in game console commands to pay your buy in fee (pay_nano) and check your balance (nano_balance) - communication between the game and the wallet is via sockets (the wallet has a socket server).
You don't need to pay to play in the games however you only get a payout if you've paid in.
How have you done it?
We've gone into the Quake2 source code and inserted variables and commands to manage the nano_address details as well as a socket client using the inbuilt socket library which can then communicate with an adjacent python script - this allows the nano hashing etc... to be written in python. It's not particularly clean but it works well and gets the job done. An earlier version of the client integrated QR codes by hijacking the scoreboard but we've dropped this in favour of the light wallet.
How can I help?
https://discord.gg/cTFWcj3 in order to join the Discord discussion.