Giter Club home page Giter Club logo

netris's Introduction

   

   

An open-source cloud gaming platform built for you to play together with your friends.
A GeForce NOW alternative that can be self-hosted.

   

Share the Netris Repository on Social Media

   

Features 🌟

As Netris navigates through its experimental phase, we're in the process of crafting and testing a variety of features for you:

  1. 🎮 Proton-GE Compatibility: We utilize Proton-GE for running games, offering extensive game compatibility and ensuring you can play a wide variety of titles.

  2. ⚡ QUIC Protocol: For input and video/audio transmission, we use QUIC via MoQ to significantly reduce latency on variable networks, ensuring crisp visuals without sacrificing data or increasing latency.

  3. 🔗 Session IDs: With a SESSION_ID, we seamlessly tie your game progress, achievements, and devices without the need for logging into netris.me. Our public CDNs, currently located in Europe (eu-north-1) and the US (us-east-1), further reduce latency for friends playing together from afar. More locations are on the way!

  4. 🔄 Automatic Game Progress Sync: Like Stadia's state share, we automatically sync your game progress based on the *.exe file you're running, allowing you to share your progress with friends via a link.

  5. 👫 Co-op Gameplay: Play co-op with up to 8 people, or play single player by sharing mouse and keyboard inputs seamlessly (similar to neko).

  6. 🌐 Cross-Platform Play: Our platform is accessible on any device that can run a Chrome-based browser, including Edge, Chrome, Brave, and Arc. And you do not have to set up anything, it's all done and maintained for you.

  7. 📊 Bandwidth Optimization: Experience hardware-accelerated VMAF for optimized bandwidth, ensuring the best possible video quality. Learn More

  8. 🌟 ...and more: Stay tuned as we continue to add features sometimes inspired by platforms like Stadia, to give you the best and most customizable gaming experience.

This platform is in an experimental phase, and we're actively working on adding new features. Your feedback and support is very much appreciated.

Important

If you're excited about what we're doing and want to support our journey, consider giving us a star ⭐ on our repository. Your support fuels our progress!. ~ ✨

Getting Started 🎮

Whether you're looking to self-host Netris or simply want to try it out without the need for your own GPU, we've got you covered. Choose the path that best suits your needs:

If you don't have a Nvidia GPU or prefer not to self-host, you can visit our website. No installation or set up required !
This is the perfect option for gamers looking to dive straight into the action without any setup.
👉🏽 Get Access
If you're interested in self-hosting Netris, continue reading for detailed instructions on how to get started.
This option is ideal if you have your own Nvidia GPU and are comfortable with setting up and managing your own server.
🛠️ Self Host Netris

Tip

Remember, flexibility is key with Netris. You're free to switch between self-hosting and using netris.me whenever you like, without losing your game progress. ~ 💡

Self-Hosting Netris 🔨

For those interested in self-hosting, here are is what you need to get your own Netris server up and running:

  • Nvidia GPU: Unfortunately, this setup is exclusive to Nvidia GPUs. If you don't own one, consider renting from cloud services like AWS, GCP, or Vast.ai. We highly recommend this approach.

  • CUDA: For GPU acceleration, CUDA version 12.0 or newer is required. Verify your CUDA installation by running nvcc --version.

  • Docker: Ensure you have docker and nvidia-docker are up to date to avoid compatibility issues with CUDA. You can check your Docker version by running docker --version in your terminal.

  • GPU Driver: Ensure your GPU drivers are up to date to avoid compatibility issues with CUDA. Nvidia driver version 520.56.06 or newer is required.

  • Xorg Display: Your Nvidia GPU should not be attached to a running X display server. You can confirm this by running nvidia-smi.

  • Nvidia-DRM: Make sure that the nvidia-drm module has been loaded and that the module is loaded with the flag modeset=1. Confirm this by running sudo cat /sys/module/nvidia_drm/parameters/modeset

Tip

Typically, if your setup meets the necessary CUDA requirements, the nvidia-drm module will already be loaded, particularly in AWS G4dn instances. ~ 💡

Step-by-Step Guide

Follow these steps to get Netris up and running on your system.

Important

This is our pilot, there is a lot we haven't figured out yet. Please file an issue if anything comes up. ~ 🫂

Tip

The setup process will become much simpler with the launch of our CLI tool, so stay tuned for that! In the meantime, you'll need to follow these manual steps.

Step 1: Navigate to Your Game Directory

First, change your directory to the location of your .exe file. For Steam games, this typically means:

cd $HOME/.steam/steam/steamapps
ls -la .

Step 2: Generate a Session ID

Create a unique session ID using the following command:

head /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 16

This command generates a random 16-character string. Be sure to note this string carefully, as you'll need it for the next step.

Step 3: Launch the Netris Server

With your SESSION_ID ready, insert it into the command below, replacing <copy here> with your actual session ID. Then, run the command to start the Netris server:

docker run --gpus all --device=/dev/dri --name netris -it --entrypoint /bin/bash -e SESSION_ID=<copy here> -v "$(pwd)":/game -p 8080:8080/udp --cap-add=SYS_NICE --cap-add=SYS_ADMIN ghcr.io/netrisdotme/netris/server:nightly

Tip

Ensure UDP port 8080 is accessible from the internet. Use ufw allow 8080/udp or adjust your cloud provider's security group settings accordingly.

Step 4: Configure the Game within the Container

After executing the previous command, you'll be in a new shell within the container (example: netris@3f199ee68c01:~$). Perform the following checks:

  1. Verify the game is mounted by executing ls -la /game. If not, exit and ensure you've correctly mounted the game directory as a volume.
  2. Then, start the Netris server by running /etc/startup.sh > /dev/null &.

Step 5: Running Your Game

Wait for the .X11-unix directory to appear in /tmp (check with ls -la /tmp). Once it appears, you're ready to launch your game.

  • With Proton-GE: netris-proton -pr <game>.exe
  • With Wine: netris-proton -wr <game>.exe

Step 6: Begin Playing

Finally, construct the play URL with your session ID:

echo "https://netris.me/play/$SESSION_ID"

Navigate to this URL in your browser, click on the page to capture your mouse pointer, and start playing!

netris's People

Contributors

wanjohiryan avatar dependabot[bot] avatar

Stargazers

Tom avatar Lee, Jun Seok avatar Micah Ilbery avatar Ivan Xu avatar Ariel Reyes avatar Аλέξιος avatar  avatar Björn Brorsson avatar  avatar Daniel THIRION avatar  avatar Tay avatar  avatar Jamie Neubert Pedersen avatar  avatar  avatar  avatar Freddy-S. avatar Luke Simmons avatar  avatar LNAhri avatar gaupoit avatar Jesus Santos avatar kernelland avatar  avatar Gabor Retvari avatar Balazs Szenczy avatar Cleverson Nahum avatar Harry Gould avatar Jaemyeong Jin avatar  Vivek Rp avatar Daniel P Clery avatar Void avatar  avatar Christoph avatar Sangelo avatar Theofanis Despoudis avatar Aurelien Soria avatar yupix avatar Excel Dwi Oktavianto avatar Gabriel Miguel avatar Matthew Glenn avatar Ergo avatar Alexandru Paul Csiki avatar Anees Manzoor avatar marcos ferreira avatar Yassine Az avatar Blake Kostner avatar  avatar Sandro avatar xqrdot avatar Carlos Santos avatar Arpan Biswas avatar Gregory B. avatar Montazar avatar Maank avatar tomat avatar Arsen Arsenović avatar Ryan Harrison avatar Rasmus Krämer avatar Stelios Petrakis avatar Ben avatar Hugo Trassoudaine avatar  avatar Raskutin Sergey avatar  avatar Niklas Sjostrom avatar Jonatan avatar Janik Kemnade avatar Alexis May Chan avatar  avatar Mikhail Yukseev avatar Joao Leal avatar Appoxo avatar Tommy Ernsund avatar  avatar Saayuj Sajith Nair avatar  avatar David Stratton avatar Anton Levholm avatar  avatar  avatar cj avatar Galin avatar Emilio Nassif avatar Prima Putra avatar William Edwards avatar Euban avatar  avatar  avatar Luke Harris avatar Andrew H avatar Angelo Soliveres avatar Newton Cardoso avatar George Lemon avatar  avatar Wibaek Park avatar jasperki_pp avatar Guillaume Tousignant avatar Chima Atufunwa avatar

Watchers

Igor Kostritsyn avatar Jason avatar Ata Çetin avatar  avatar Lukas Zaoralek avatar  avatar  avatar  avatar Lance Watson avatar Piotr Świercz avatar  avatar begin-theadventure avatar  avatar Jesus JM avatar Jonas Bang avatar

netris's Issues

🎥 [Feature Request] Request for a Demo Video

Firstly, I want to thank you for your incredible work. It’s an impressive project.

can you add an short video showcasing a live demo? it will help the users to make decision on buying pro plan.

I understand it's an experimental software, but still it would benefit the community.

Thanks :)

🔄 [Documentation] Clarify on Browser Compatibility plus Support for Non-Chromium Browsers

General topic

On the website and the README.md, there's a clear mention of the project being very compatible with Chrome-based browsers such as Microsoft Edge, Google Chrome, Brave etc.

Question / Discussion

Is there any list of incompatibilities available for other well-known browsers such as Firefox or Safari, for developers to reference and potentially fix it down the line? I think it would be a useful resource for both gamers/end users and developers/contributors to the project to help increase the compatibility and usefulness of the browser.

By the way, I would suggest saying "Chromium"-based browsers instead of "Chrome"-based browsers, as the base of the Chrome browser is actually Chromium (with it being a separate browser as well).

Docker Setup

Project looks amazing and I'm super eager to test out in a self hosted model. Are there instructions for getting this running in Docker?

Thank you for your work

🛡️ [Branding] Potential Trademark Issues

Issue

Hi there, congratulations on this FOSS project. 👏 I stumbled upon this project on social media, cool to see someone tackling a selfhostable GeForce NOW.

However, after looking at the project I spotted potential issues with the project's branding:

Potential legal issue

While I am not an attorney or lawyer in any way, shape or form, I did notice Google's Stadia logo being present on the "overview banner" in the README.md. Despite the clear disassociation on the website, I don't think it's legal to use their trademarked logo as advertising unless you actually use Stadia's technology. (Compared to using Steam's and NVIDIA's trademarks as the project utilises Steam as software, and NVIDIA both in software and hardware, making that usage more so "fair use".)

General name confusion/unclarity

The name Netris has several issues regarding clarity:

  • Name is confusing, sounding either like a TETRIS clone or some type of network tool (other than "game streaming").
  • Several preexisting projects on GitHub share the same name, not helping beating the confusion of the name. Not to mention other companies or software projects globally using the name already (a quick Google search will show up Netris VPC for example).

Proposal

I would suggest to quickly remove the Stadia trademark from the banner in the README.md to not attract any potential legal action from Google, especially as this could be seen as a "threatening competitor" to their (now defunct towards the general public) streaming service.

Another suggestion would be to rename the project, although I do understand that would be a bit more difficult as that would require renaming Netris everywhere.

Hotel version

In collaboration with Steam, I think it would be a great feature to be able to provide hotels to add a bluetooth controller to their Smart TVs and be able to play some games from Steam, being a platform for hotels to give a service, and to Steam to advertise new games, or just to allow their own customers to use their games without a Steam Deck or another computer when staying at a hotel room more than expected, to kill some time.

🗨️ [Enhancement] Enabling GitHub Discussions for In-Depth Conversations

I think Github Discussions should be enabled to allow people to talk about some suggestions without having to use the Issues section.
I think it serves a different purpose than the Discord server, as it can be used for real-time support, while discussions would be useful for longer conversations that might also be helpful to other users when they are resolved.
Also, the discussions would be "closer" to the code, so it would be more about the code, whereas Discord would be more for the users.

[🐛 Bug] Enigo causes gamescope to quit

I am getting an error, whereby, if the warp-input server is connected to the frontend, and running /usr/games/gamescope cannot start.

The error i get is:

netris@f303b471529c:~$ /usr/games/gamescope -- vkcube
wlserver: [backend/headless/backend.c:68] Creating headless backend
gamescope: ../src/wlserver.cpp:1413: void wlserver_key(uint32_t, bool, uint32_t): Assertion `wlserver.wlr.virtual_keyboard_device != nullptr' failed.
Aborted

And after disconnecting from the input session, you get:

wlserver: [wayland] error: XDG_RUNTIME_DIR is invalid or not set in the environment

You have to ait long enough for the warp-input server to go into the "retry loop" before you can start gamescope.

⛏️ [Feature Request] Flatpak build for Linux vs Docker

  • with flaptaks there are no dependencies problems
  • flatpaks works same in all distros
  • if you providing flatpak builds, there are no need to build binaries for every single distro
  • flatpaks are main way to install apps on atomic distros, like fedora atomic, vanilla os, and steam os

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.