Freie Minecraft-Alternative

Microsoft kauft Mojang und damit Minecraft. Wenn man sich andere Akquisitionen von Microsoft im Spielebereich anschaut, bekommt man bei dieser Vorstellung ein mulmiges Gefühl. Entweder Sie fahren das Spiel gegen die Wand, oder es läuft demnächst nur noch auf Microsoft-Betriebssystemen. Natürlich kann auch alles funktionierten und unsere Befürchtungen erweisen sich als gegenstandslos. Allerdings zeigt der Aufkauf von Mojang eine Abhängigkeit auf. So haben viele Menschen riesige Bauwerke geschaffen, welche unter Umständen bald nicht mehr verfügbar sind. Minecraft ist nicht nur ein Spiel, es ist ein Kreativbetriebssystem. In einem solchem Fall spielt freie Software ihre Vorteile aus. Bei einer solchen Software, kann man das ganze einfach forken und in seinem Sinne weiterentwickeln. Bei proprietärer Software wird dies schwierig.

Eine von vielen Minecraft-Welten

Eine von vielen Minecraft-Welten

Mit Minetest gibt es einen durch Minecraft inspirierten Clone, welcher für Mac OS X, Linux und Windows verfügbar ist. Das Spiel ist im Gegensatz zur aktuellen Minecraft-Version etwas rudimentär, was Dinge wie verfügbare Blöcke und ähnliches angeht. Allerdings relativiert sich das ganze wenn man sich die API-Schnittstelle anschaut. Mit Hilfe der API, kann man alle möglichen Erweiterungen wie Loren, TNT, Mobs oder Pyramiden ins Spiel holen. Die maximale Weltgröße ist auf −30912 zu 30927 in allen Dimensionen (auch Z) beschränkt. Etwas seltsam erscheint mir allerdings die Speicherung der Map in einer SQLite-Datenbank – dort muss sich zeigen ob dies bei großen Welten wirklich performant ist. Auch für Server-Backups ist dieses Verfahren nicht wirklich gut geeignet. Minetest ist in C++ entwickelt, was sich positiv auf die allgemeine Performance auswirkt, so das es auch auf schwächeren Rechnern genutzt werden kann – so gibt es schon Versuche das ganze auch auf dem Raspberry Pi zum laufen zu bringen.

Minetest in Aktion

Minetest in Aktion

Die Entwicklung von Minetest sieht dabei vielversprechend aus, so das man in Zukunft viele Verbesserungen und neue Features erwarten darf. Neben dem Client ist auch ein Server für den Mehrspieler-Betrieb verfügbar. Der unter der LGPL lizenzierte Quellcode kann über GitHub bezogen werden. Die offizielle Seite von Minetest ist unter minetest.net zu finden.

Git Interaktiv

Wer in das Versionskontrollsystem Git einsteigen möchte, aber keine Lust hat ein Tutorial nach dem anderen durchzuprobieren, sollte es mal mit try.github.io versuchen. Dabei handelt es sich um ein von GitHub zur Verfügung gestelltes interaktives Tutorial in 25 Schritten.

try.github.io

try.github.io

Dabei wird man Stück für Stück in die Git Befehle eingeführt und kann das live am angezeigten Octobox Repository ausprobieren. Das ganze Tutorial sollte dabei in etwa 15 – 30 Minuten in Anspruch nehmen.

Git Branch unter TortoiseGit entfernen

Möchte man einen Git Branch entfernen, so ist dies auf der Konsole mit einer Zeile erledigt:

git branch -D alterBranch

Unter TortoiseGit, einer freien Git Integration für Windows ist dies etwas komplizierter, da das ganze etwas versteckt ist. Um einen Branch zu löschen, öffnet man mittels des Kontextmenüs den Switch/Checkout-Dialog. Dort klickt man auf den Button mit den drei Punkten.

Switch/Checkout

Switch/Checkout

Anschließend öffnet sich ein Dialog welcher eine Übersicht über alle Repository-Branches anzeigt. Dort kann der gewünscht Branch mittels Kontextmenü gelöscht werden.

Remote Tag unter Git löschen

Manchmal möchte man einen Remote-Tag unter Git wieder entfernen bzw. ihn komplett löschen. Dazu dienen folgende Kommandos:

git tag -d tagToBeRemoved
git push origin :refs/tags/tagToBeRemoved

Im ersten Schritt wird der Tag lokal entfernt. Anschließend wird die Änderung in das Remote-Repository übertragen. Damit ist der Tag Geschichte und sollte nicht mehr auftauchen.

Verzeichnis von einem Git Repository in ein anderes verschieben

Unter Git möchte man manchmal ein Verzeichnis von einem Repository zu einem anderen verschieben. Natürlich soll dabei die Revisionsgeschichte nicht verloren gehen. In diesem Fall hilft folgendes Bashskript:

#!/bin/sh
# moves a folder from one git repository to another
# moveFolder <absolute repository one path> <repository one folder> <absolute repository two path>

# prepare repository one
cd $1
git clean -f -d -x
git checkout -b tmpBranch
git filter-branch --subdirectory-filter $2 HEAD
mkdir $2
mv * $2
git add .
git commit -a -m "Move files into folder"

#import in repository two
cd $3
git remote add repositoryOne $1
git pull repositoryOne tmpBranch
git remote rm repositoryOne

#cleanup
cd $1
git checkout master
git branch -D tmpBranch

#remove folder with history from repository one
cd $1
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch $2" HEAD

Genutzt wird das Skript dabei wie folgt:

./moveFolder /absolute/path/to/repo/one folderFromRepoOne /absolute/path/to/repo/two

Nachdem das Verzeichnis in das neue Repository mitsamt der Revisionsgeschichte übertragen wurde, wird es aus dem alten Repository entfernt. Das Skript funktioniert dabei unter Windows, Linux und Mac OS X. Die jeweils aktuellste Version ist auf GitHub zu finden.