Commit Graph
52 Commits
Author SHA1 Message Date
Wanjohi 04a277dede 🐛 fix(autolabeller): Use GITHUB_TOKEN for adding labels too (#88)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Well, we figured out the first part(PR TITLE) and forgot about the
labelling part. 😅 Consult #87 for more info
2024-06-18 01:56:20 +03:00
Wanjohi 51366d3b4b 🐛 fix(autolabeller): Use GITHUB_TOKEN for autolabelling (#87)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**
We are using my personal account key to do autolabelling. This used to
work when the project was under my personal, but now it breaks whenever
some 3rd party tries to open a PR
2024-06-18 01:48:39 +03:00
Wanjohi fd4f575b46 🐛 fix: Delete .scripts/supervisord.d directory (#81) 2024-06-06 21:08:18 +03:00
Wanjohi 3991027587 🐛 fix(server): Replace netris with nestri in supervisord.conf (#80)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Supervisord fails to run as user `netris` no longer exists. So we are
renaming all occurrences of old username with new username `nestri`
2024-06-06 19:10:24 +03:00
Wanjohi 5c9cb8e563 🐛 fix: Rename netris to nestri (#78)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

This PR is the first in a series of PRs trying to solve the issue #48 by
renaming `Netris` to `Nestri` to avoid Trademark legal issues.
2024-06-06 00:27:40 +03:00
Wanjohi 3fed8605fa 📝 docs(readme): Add manual setup and game launch instructions (#69)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**
Update the README to show how to how to run Netris.
2024-05-30 03:22:16 +03:00
Wanjohi 674124e819 🐛 fix(server): Final touches (#66)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

This is a catch all PR that tries to smooth out the creases found while
playing using Netris.
What i have found so far:
1. Change `NAME` environment to `SESSION_ID` for warp server.
2. Run `entrypoint.sh` and `warp-input` as user `netris`
3. Netris-proton is broken, it quits prematurely. I think it has to be a
problem with a missing wine installation
2024-05-30 01:53:07 +03:00
Wanjohi 9a11f459cb 🐛 fix(input): Retry when namespace doesn't exist (#65)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

`Warp-input` server errors out when the namespace or `session_id` has
not yet been created on our relay.
This is a problem, as we do not know when the user will start playing.
The idea is to have the bin/input run both a server and a client at the
same time. Which can be used to then transmit bidirectional information.
2024-05-27 01:08:56 +03:00
Wanjohi 46fe87a715 ✨ feat(server): Add warp-input server (#64)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We need to remove the inputtino server, and replace it with `warp-input`
server, which is developed in-house and it works.
2024-05-25 00:52:46 +03:00
Wanjohi 204730450c ✨ feat(server): Add startup script (#63)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We start the container using supervisord, which is limiting as the user
has no way of telling the container what game to run. So, the idea is to
run like so: `docker run... ghcr.io/netrisdotme/netris/server:<tag>
netris-proton /game/yourgame.exe`


Co-authored by @djpremier
2024-05-25 00:24:45 +03:00
Wanjohi e6fa6ea6e1 🐛 fix(server): Support the Open Kernel Module (#62)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Currently, the container fails when trying to download drivers for a
container running non-proprietary Nvidia drivers. So, this is a fix
which searches for numbers rather than a fixed point in the string.
2024-05-25 00:07:27 +03:00
Wanjohi ea157b4898 ✨ feat(server): Rename /netris/proton to netris-proton (#61)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

With help from @djpremier, rename `/usr/bin/netris/proton` as "the
script cannot be found in bash `(eg.: $ proton -r /games/AlanWake.exe)`
if it is in the subdirectory of /usr/bin, probably because it is found
in a subdir inside `/usr/bin` "
2024-05-25 00:02:36 +03:00
Wanjohi df332b66bc 🐛 fix(git): Build warp-input on push to main (#57)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

There is a bug whereby `netris/warp-input` does not build and deploy a
new nightly docker image when a pr is merged. This happens when there
are changes in `bin/input/**` directory, and this is not the expected
behaviour. So i added the directory back into the `warp-input.yml`
workflow file.
2024-05-21 03:24:37 +03:00
Wanjohi 8304ca08a4 🐛 fix(input): Append input to server's session ID for now (#56)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

I am having issues trying to append `input` to the session_id using
bash. Most probably because supervisord is using the ENV variables
already available in the container. So, here we append the `input` part
inside the rust binary instead. This is much cleaner and it works.
2024-05-21 03:13:52 +03:00
Wanjohi 9bb194091d 🐛 fix(git): Release warp* docker images too (#46)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

`warp-input.yml` workflow was not getting invoked on push. So, I change
the `Github Token` which has broader permissions.
2024-05-19 05:06:54 +03:00
Wanjohi ad210f2b75 🐛 fix(git): Fix release (#45)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Well, I tried doing a release and it did not go as expected, due to some
issues with the git_token plus concurrency. So, i have fixed that... let
us do a re-release.
2024-05-19 04:42:14 +03:00
Wanjohi a0956eccc0 📝 docs: Add README.md (#42)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**
So, we need a README.md at the root of the project, to at least welcome
anyone who might be interested in the project.

It should have:
- [ ] link to the `/play` endpoint to get a `session_id` for starting up
the server.
 - [ ] (basic) info about how it works
 - [ ] features
 - [ ] images and/or gifs showcasing the project
2024-05-19 04:08:17 +03:00
Wanjohi b91b8bba33 🐛 fix(git): Add docs/** branch (#44)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

There seems to be a problem with auto-labeler labelling `type:docs`. So
i am adding to check on the `docs/**` branch too and label that
accordingly.
2024-05-19 01:50:42 +03:00
Wanjohi c0f573599f ✨ feat(input): Migrate to moq for input transmission (#38)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We cannot use golang for our input binary as we will be redoing the
Webtransport stack, plus we will have to use CGO in-order to hook into
X11. Like what [neko](https://github.com/m1k1o/neko) does.

However, we could go down the Rust route, where X11 mouse/keyboard
drivers are in pretty, and moq-rs (the MoQ library using Webtransport)
works really well. So, that is what am trying to do here; implement
input using rust.
2024-05-18 01:51:35 +03:00
Wanjohi 3222d3b4e5 ✨ feat: Add input server (#37)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Doing some ground work for the input server, here I am initializing a go
project. That's all
2024-05-01 03:27:36 +03:00
Wanjohi cea6cc5340 🐛 fix(github): Add build type to auto-labeller for dependabot (#36)
## Description

**What(what issue does this code solve/what feature does it add):**

Dependabot does not have a `build` semver type and it keeps triggering
the autolabeller. So, i added that in there, plus slimmed down the
pull_request_template as it required too much info, which made it too
cumbersome filling it
2024-05-01 02:24:57 +03:00
Wanjohi 34ed8f90be ✨ feat(server): Install winetricks (#31)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-22 21:26:45 +03:00
Wanjohi 593ab09195 🐛 fix(server): Run input-server as root to get permissions to create … (#30)
…devices

## Description

**What(what issue does this code solve/what feature does it add):**
Currently we get a permission error when trying to create a mouse.

On further investigation, we realise that we have to run
`/inputtino/input-server` as sudo/root.

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-22 17:28:09 +03:00
Wanjohi d2cf25b752 ✨ feat(moq-server): Add audio 2024-04-22 13:23:40 +03:00
Wanjohi da9e2b7207 🔧 chore: Use dependabot to maintain and update moq-server (#28)
## Description

**What(what issue does this code solve/what feature does it add):**
Update the moq-server submodule to support audio

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-22 13:20:36 +03:00
Wanjohi c7cb295628 ✨ feat(server): Add keyboard and mouse input (#27)
## Description

**What(what issue does this code solve/what feature does it add):**
We need to support feedback for mouse and keyboard.

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-22 12:53:46 +03:00
Wanjohi 408a627c08 ✨ feat: Capture screen and send with warp (#26)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-20 01:23:05 +03:00
Wanjohi 4c6bc98bdc ✨ feat(server): Copy warp from docker (#24)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-16 05:04:00 +03:00
Wanjohi 85db990699 🐛 fix(.github): remove references to warp 2024-04-16 04:53:41 +03:00
Wanjohi 039cc96f3d ✨ feat: Add a separate image to build warp (#23)
## Description

**What(what issue does this code solve/what feature does it add):**
Build times for netris:server are way too long. so the idea is to move
warp into it's own container then build from there.
Later on first release we might drop this for a better solution.
**How(how does it solve it):**
1. Added the very own netris:warp

## Required Checklist:

- [x] I have added any necessary documentation and comments in my code
(where appropriate)
- [x] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-16 04:48:31 +03:00
Wanjohi 993d8238a3 🐛 fix(scripts): fix entrypoint.sh crashes 2024-04-16 03:50:03 +03:00
Wanjohi 2fc7d24fee 🐛 fix(base): Add xcvt 2024-04-16 03:16:39 +03:00
Wanjohi cffbf46639 🐛 fix(server): Clean up the supervisord.conf and COPY supervisord.conf to /etc (#22)
## Description

**What(what issue does this code solve/what feature does it add):**
Docker build server fails because `supervisord.conf` is getting copied
to a different directory other than `/etc`
**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-16 02:39:27 +03:00
Wanjohi c2c3590b0c 🐛 fix: Change default user to ubuntu 2024-04-16 02:13:12 +03:00
Wanjohi 66f7ba200f 🐛 fix(server): Test out in the wild (#20)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-16 01:49:06 +03:00
Wanjohi e7f5666d7a ✨ feat: Merge recorder and ffmpeg to base (#21)
## Description

**What(what issue does this code solve/what feature does it add):**
We do not need the ffmpeg and recorder all sitting differently, as this
will increase our docker image size
**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-15 10:40:03 +03:00
Wanjohi 5d3d4acde7 ✨ feat(server): Integrate ffmpeg and warp into the server 2024-04-04 04:17:33 +03:00
Wanjohi 4897a20ed0 ✨ feat: Add warp (moq-pub) (#15)
## Description

**What(what issue does this code solve/what feature does it add):**
`Warp` will be used to "trasmit" the video and audio from the container
to the user/viewer wherever they are.

**How(how does it solve it):**
1. Add a Github worker that builds warp on pr, and one that builds and
pushes on release

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 03:57:14 +03:00
Wanjohi 9e9f52353b ✨ feat: Add ffmpeg (#12)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 02:53:53 +03:00
Wanjohi 1d714b5019 🐛 fix(server): Add CAP_SYS* capabilities to the gpu-screen-recorder (#13)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 01:26:14 +03:00
Wanjohi c56a0f636e 🔧 chore(github): Add labels for ffmpeg and recorder (#14)
## Description

**What(what issue does this code solve/what feature does it add):**

**How(how does it solve it):**

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 01:22:23 +03:00
Wanjohi 9131344d30 ✨ feat(server): Integrate gpu-screen-recorder into the server (#11)
## Description

**What(what issue does this code solve/what feature does it add):**

We succesfully built the gpu-screen-recorder in a separate container...
now we need to add it into the main container

**How(how does it solve it):**
1. Copy the relevant user/bin files from the separate docker image
2. 
## Required Checklist:

- [x] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 00:58:29 +03:00
Wanjohi b381e44b96 ✨ feat(server): Add pulseaudio to capture sound (#10)
## Description

**What(what issue does this code solve/what feature does it add):**
We do not have a way to capture sound inside the container.
**How(how does it solve it):**
1. Install pulseaudio inside the container
2. Add an entrypoint.sh where we start the pulseaudio
## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-04 00:32:17 +03:00
Wanjohi 5492f2201f ✨ feat(server): Add gpu-screen-recorder (#9)
## Description

**What(what issue does this code solve/what feature does it add):**

So, we have our simple compositor (`gamescope`), now we need a way to
capture audio and video.
And i have found this "performant" **_citation needed_ ** and minimal
screen recorder, which has the capability to even capture 30 second
screen snippets.

**How(how does it solve it):**
1. Add a minimal step inside the DockerFile to build and install the
gpu-screen-recorder

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-03 04:53:16 +03:00
Wanjohi 198ba6593d ✨ feat(server): Add mangohud, gamescope and gamemode (#8)
## Description

**What(what issue does this code solve/what feature does it add):**

We are adding mangohud (to show GPU usage), gamemode (for optimisations)
and gamescope (as our compositor)

**How(how does it solve it):**

1. Apt install mangohud
2. Install gamescope from flatpak
3. And then build gamemode

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-02 23:38:08 +03:00
Wanjohi 17d497eb7c ✨ feat(server): Add Vulkan and Xwayland support (#6)
## Description

**What(what issue does this code solve/what feature does it add):**

We have no display server inside the container, nor Vulkan which will
later be required by dxvk/d3d11/d3d12 in order to play games using
Proton.

**How(how does it solve it):**

1. We added vulkan and Xwayland packages into `server.Dockerfile` , then
tested with running `vkcube` and `vulkaninfo` after running an
interactive bash shell inside the container.

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-04-01 22:33:06 +03:00
WanjohiandWanjohi bf403fb8de ✨ feat(server): Add nvidia gpu passthrough support (#5)
## Description

**What(what issue does this code solve/what feature does it add):**
Currently on `docker run --gpus 1 netris:server` and run `nvidia-smi`
you get an error.

**How(how does it solve it):**
We add the relevant NVIDIA_* env variables to allow for gpu passthrough.

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments

Co-authored-by: Wanjohi <71614375+wanjohiryan@usersnoreply.github.com>
2024-04-01 03:42:26 +03:00
Wanjohi e68e1018c3 ✨ feat: Add dev website (#4)
## Description

**What(what issue does this code solve/what feature does it add):**

Add a qwik project where we can add API(s) and a frontend which will be
used to review and deploy to AWS our docker containers for testing.

**How(how does it solve it):**

1. Initialise a qwik project at `apps/www` 

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-03-29 22:54:17 +03:00
Wanjohi 41350edf3e ✨ feat(server): Add Nvidia gpu configuration script (#3)
## Description

**What(what issue does this code solve/what feature does it add):**

Add a way to configure the Nvidia GPU, by installing the necessary
packages for Proton to work.

**How(how does it solve it):**

We made a script `.scripts/gpu` when called like `gpu -c` it will
install Vulkan and proprietry nvidia drivers.

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-03-29 18:02:18 +03:00
Wanjohi c4f5e2296c ✨ feat: Add server Dockerfile (#2)
## Description

**What(what issue does this code solve/what feature does it add):**

We are adding the `Dockerfile` with all the scripts and programs to run
our games in.

**How(how does it solve it):**

1. Add `serverDockerfile` which contains all the docker code.
2. Add `.scripts` folder where we will store all the scripts; for
example in our case, where proton installation script will reside.

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-03-29 10:03:31 +03:00
Wanjohi 7d5d8be14b ✨ feat: Add relay docker image (#1)
## Description

**What(what issue does this code solve/what feature does it add):**

We are adding the `Dockerfile` to build a moq-relay

**How(how does it solve it):**

1. Added `relay.Dockerfile` with all the docker code to build
kixelated's moq-relay.
2. Added `relay.yml` in workflows for building and publishing the docker
image

## Required Checklist:

- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts

## Further comments
2024-03-29 09:40:29 +03:00
Wanjohi 601c268a39 ✨ feat: initial commit 2024-03-29 08:55:02 +03:00