Compare commits

..

No commits in common. "bf5217b14aa8e9e6ebd98707454033f482cbae4e" and "d698dca2ab487cc3ab681bedfc2684a5b4dd9a64" have entirely different histories.

3 changed files with 8 additions and 21 deletions

View file

@ -25,7 +25,7 @@ Example:
$ echo "SIZE" | netcat pixelflut.example.com 1337 $ echo "SIZE" | netcat pixelflut.example.com 1337
SIZE 800 600 SIZE 800 600
$ echo "PX 23 42 ff8000" | netcat pixelflut.example.com 1337 $ echo "PX 23 42 ff8000" | netcat pixelflut.example.com 1337
$ echo "PX 23 42" | netcat pixelflut.example.com 1337 $ echo "PX 32 42" | netcat pixelflut.example.com 1337
PX 23 42 ff8000 PX 23 42 ff8000
Implementations MAY support additional commands or have less strict parsing rules (e.g. allow `\r\n` or any whitespace between parameters) but they MUST support the commands above. Implementations MAY support additional commands or have less strict parsing rules (e.g. allow `\r\n` or any whitespace between parameters) but they MUST support the commands above.
@ -46,21 +46,16 @@ Server written in Python, based on gevent and pygame. Easy to hack with, but a b
#### `/pixelwar` (java server) #### `/pixelwar` (java server)
Server written in Java8, based on netty and awt. Optimized for speed and large player groups, fast networks or high-resolution projectors. This is probably the most portable version and runs on windows, too. Server written in Java8, based on netty and awt. Optimized for speed and large player groups, fast networks or high resolution projectors. This is probably the most portable version and runs on windows, too.
cd pixelwar cd pixelwar
sudo apt-get install maven openjdk-8-jdk sudo apt-get install maven openjdk-8-jdk
mvn package mvn package
java -jar target/pixelwar*-jar-with-dependencies.jar java -jar target/pixelwar*-jar-with-dependencies.jar
or, if you have docker installed but don't want to install maven:
docker run -it --rm --user "`id -u`:`id -g`" --volume "`pwd`:/build" --workdir /build maven:3-jdk-8-alpine mvn -Duser.home=/build clean package
java -jar target/pixelwar*-jar-with-dependencies.jar
#### `/pixelnuke` (C server) #### `/pixelnuke` (C server)
Server written in C, based on libevent2, OpenGL, GLFW and pthreads. It won't get any faster than this. Perfect for fast networks and large groups. Server written in C, based on libevent2, OpenGL, GLFW and pthreads. It won't get any faster than this. Prfect for fast networks and large groups.
cd pixelnuke cd pixelnuke
sudo apt-get install build-essential libevent-dev libglew-dev libglfw3-dev sudo apt-get install build-essential libevent-dev libglew-dev libglfw3-dev
@ -81,12 +76,12 @@ Additional Commands:
* `conn:<uint>` Number of currently connected clients. * `conn:<uint>` Number of currently connected clients.
Planned Features: Planned Features:
- [x] Toggle between windowed/fullscreen mode and switch monitors in fullscreen mode. - [x] Toggle between windowed/fullscreen mode and switch monitors in fullscreen-mode.
- [ ] Persist pixel buffer between restarts. Use an mmap-ed file for pixel data? - [ ] Persist pixel buffer between restarts. Use an mmap-ed file for pixel data?
- [ ] Save to PPM (via key, timer or admin command) and add docs/tools to convert these into a video. - [ ] Save to PPM (via key, timer or admin command) and add docs/tools to convert these into a video.
- [ ] Support to draw directly to a framebuffer (no OpenGL or X Server dependency -> Raspberry-PI compatible) - [ ] Support to draw directly to a framebuffer (no OpenGL or X Server dependency -> Raspberry-PI compatible)
- [ ] Showcase-Mode: Players won't draw at the same time, but take turns. Each player gets N seconds of exclusive draw time) - [ ] Showcase-Mode: Players won't draw at the same time, but take turns. Each player gets N seconds of exclusive draw time)
- [ ] Limit concurrent connections on a per IP basis. - [ ] Limit concurrent connections per IP.
- [ ] Admin commands: Unlock additional commands with a password (e.g. `PX2 <x> <y> <rrggbbaa>` to draw to the overlay layer) - [ ] Admin commands: Unlock additional commands with a password (e.g. `PX2 <x> <y> <rrggbbaa>` to draw to the overlay layer)
@ -108,7 +103,3 @@ https://www.youtube.com/watch?v=1Jt-X437MKM
Pixelflut GPN17 Badge Pixelflut GPN17 Badge
https://www.youtube.com/watch?v=JGg4zqqumvs https://www.youtube.com/watch?v=JGg4zqqumvs
Rüspeler Tüfteltage (Kliemannsland, 2018)
https://youtu.be/TijSQYZoRUU?t=6m

View file

@ -5,7 +5,7 @@ __version__ = '0.6'
import time import time
from gevent import spawn, sleep as gsleep, GreenletExit from gevent import spawn, sleep as gsleep, GreenletExit
from gevent.socket import socket, SOL_SOCKET, SO_REUSEADDR from gevent.socket import socket, SOL_SOCKET, SO_REUSEADDR
from gevent.lock import Semaphore, RLock from gevent.coros import Semaphore, RLock
from gevent.queue import Queue from gevent.queue import Queue
from collections import deque from collections import deque
import pygame import pygame

View file

@ -82,11 +82,7 @@ public class PixelServer extends ChannelHandlerAdapter {
public static void main(final String[] args) throws InterruptedException, public static void main(final String[] args) throws InterruptedException,
IOException { IOException {
int port = 8080; new PixelServer(8080).run();
if(args.length == 1) {
port = Integer.parseInt(args[0]);
}
System.out.println("Starting server on port " + port);
new PixelServer(port).run();
} }
} }