A 40-page Bachelor’s degree thesis on the legendary bit-hacking Quake III Q_rsqrt() implementation:
Le sujet de cette conférence prend le parti d’étudier l’héritage du code libéré d’id Software [...]. L’héritage d’id Software a profondément changé le paysage, la libération du code a alimenté à la fois le monde universitaire et une passion vive chez de nombreuses personnes
la conférence [...] développe une réflexion plus large sur la nature d’un service, le besoin de développer des communautés, la place de la collaboration dans une communauté de logiciel libre, comment des choix de conceptions peuvent induire un état d’esprit qui nourrit la conception à son tour, etc.
En 2005 le code de Quake 3 fut libéré quand il était obsolète d’un point de vue économique. [...] Cette ouverture a permis de nombreux jeux libres, ou jeux avec un code source libre, de devenir des choses autonomes. Nous pouvons citer Tremulous sur lequel Unvanquished est fondé, World of Padman, Smokin' Guns, OpenArena et d’autres. Urban Terror a été distribué avec le moteur Quake 3 open source mais le code du jeu fut toujours propriétaire.
Avec une telle rétrospective, ce qui semble bizarre est découvrir que c’est parce que le code était mort, je veux dire tué, qu’il était possible de l’ouvrir. Donc d’un côté nous avons reçu un code libre et ouvert, mais de l’autre ce code était censé être mort et produire des morts-vivants (zombies).
Useful CLI when you have the RCON password of a Quake 3 server !
I have set up the script below as a cron job to alert me whenever a player connect to my friend server :
#!/bin/bash
set -o pipefail -o errexit -o nounset
cd $(dirname "${BASH_SOURCE[0]}")
date
echo status | quake3-rcon $server_address $rcon_password > quake3-kleph.status
grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' quake3-kleph.status | awk '{ print $4 }' > quake3-kleph.players
if ! diff -q quake3-kleph.players quake3-kleph.players.old; then
echo 'New player detected'
./send_reminder.sh "New player joined kleph.eu Quake3 server: $(comm -13 <(sort quake3-kleph.players.old) <(sort quake3-kleph.players) | tr '\n' ' ')"
fi
mv quake3-kleph.players quake3-kleph.players.old