Compare commits
10 commits
d698dca2ab
...
bf5217b14a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf5217b14a | ||
|
|
70174062e1 | ||
|
|
3458157a24 | ||
|
|
19fa340a30 | ||
|
|
3fa131916d | ||
|
|
7dbd3c29da | ||
|
|
efa739fd1b | ||
|
|
47fde7fa7e | ||
|
|
1c26156476 | ||
|
|
fbe90e14e3 |
3 changed files with 21 additions and 8 deletions
19
README.md
19
README.md
|
|
@ -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 32 42" | netcat pixelflut.example.com 1337
|
$ echo "PX 23 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,16 +46,21 @@ 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. Prfect 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. Perfect 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
|
||||||
|
|
@ -76,12 +81,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 per IP.
|
- [ ] Limit concurrent connections on a per IP basis.
|
||||||
- [ ] 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -103,3 +108,7 @@ 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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.coros import Semaphore, RLock
|
from gevent.lock 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
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,11 @@ 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 {
|
||||||
new PixelServer(8080).run();
|
int port = 8080;
|
||||||
|
if(args.length == 1) {
|
||||||
|
port = Integer.parseInt(args[0]);
|
||||||
|
}
|
||||||
|
System.out.println("Starting server on port " + port);
|
||||||
|
new PixelServer(port).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue