Minecraft. Játékos körökben nincs az a személy, aki ne találkozott volna még a Minecraft-al. Van aki érti, van aki nem. Van aki imádja, van aki nem. Egyesek szerint fantasztikus játék, mások szerint csupán egy halom kocka. Egy biztos, a Minecraft egy új stílust hozott a számítógépes játékok világába. Egy pár szóval most én is megemlékeznék a játékról, mert engem is elkapott a láz vele kapcsolatban.
Miről szól?
A Minecraftnak nincs igazán története. Persze meg lehet találni a fő gonoszt, legyőzni, és megtekinteni a stáblistát, de a játék maga túlmutat ezen. Kezdjük azzal, hogy nincs „a pálya”, amit követve a történetet eljuthatunk A-ból B pontba, majd C-be. Saját gépünk fog véletlenszerűen generálni egy világot, és odadob minket az egyik pontjára. Legyen az puszta, hegy, erdő, dzsungel.
Innentől mi vagyunk. Mehetünk akárhova. Csinálhatunk akármit. A pályán nincs dekoráció, mindent kibányászhatunk, elmozdíthatunk, illetve a felhalmozott nyersanyagokból építkezhetünk. Fontos tudni, hogy a Minecraft világában minden block-okból (négyzetekből) áll. A föld, a víz, fa, kő, stb ugyan akkora négyzet csak a színük más. Szokás a Minecraft-ot LEGOzásnak is nevezni. Gyakorlatilag egy interaktív LEGO világ. Tehát van egy véletlenszerű világunk, amibe bepottyanunk, és azt tehetünk, amit akarunk.
A kreativitás pedig hamar elragadja az ember gyermekded lelkét.
Bányászás
A Minecraft alapvetően két részből áll. A bányászás az első fontos része. Minden block-ot ki tudunk bányászni. Ezzel tetszőleges alakzatokat, házakat, kialakítva. Természetesen a földön és az egyszerű kövön túl találhatunk speciális ásványokat, amiket speciális módon tudunk felhasználni. A bányászás viszont egy fontos eleme a Minecraft-nak. Nyersanyagból lesz minden.
Barkácsolás
Az egyedi világunk kibányászása és építésébe persze viszonylag gyorsan rá lehetne unni. Az egészet feldobja a barkácsolás. A LEGO-val játsza nincs lehetőségünk elemeket összepárosítva új tulajdonsággal és funkcióval felruházni a block-okat. A Minecraft-ban a karakterünk alapból rendelkezik „crafting” képességgel. Adott egy 2×2 es négyzet, amibe ha megfelelő nyersanyagot teszünk a megfelelő négyzetbe, akkor kapunk egy új elemet, vagy épp eszközt. Készíthetünk csákányt, baltát, kardot, stb. Persze lehetőségünk van barkácsasztal, sütő, és egyéb eszköz megalkotására, ami által még újabb eszközöket tudunk létrehozni. A list szinte végtelen.
A friss verzióban készíthetünk elektromos, és automatikus eszközöket, és környezetünket minden féle alap elektromosságból ismert szabályok szerint turbózhatjuk fel.
A szörnyek
A játék ismeri a napszakokat és az időjárást is. Van, hogy esik az eső, a hegyekben a hó. Ennék viszont fontosabb, hogy időről időre váltakoznak a nappalok és éjszakák. Éjszaka persze rosszabbul látunk, de ami ennél is fontosabb Survival módban, este jönnek a szörnyek. Különféle szörnyek vannak. Van amik nyilaznak, vannak amik felrobbannak mellettünk, mások varázslatokat dobnak ránk, de egy közös, mind meg akar minket ölni.
Tehát este be kell menekülnünk valami elzárt helyre. Saját házunkba, egy barlangba, vagy akárhova. A lényeg, hogy kivilágított és elzárt hely legyen. A kivilágított helyeken nem tűnnek elő szörnyek, de utánunk utánunk jönnek. Amint feljön a nap a legtöbb felgyullad és magától elég.
Amennyiben megöl minket egy szörny, úgy normál Survival esetében újraszületünk, elvesztjük azokat a cuccainkat, amik nálunk voltak, de persze minden, amit a világban tettünk az megmarad.
Creative
Creative módban gyakorlatilag Istenek vagyunk. Nem árthat nekünk senki, alapból MINDEN blokk és eszköz a rendelkezésünkre áll. Ilyenkor általában építeni szoktak az emberek, nem a tradicionális Minecraft-ot játszani. Ki ne rakott már ki LEGO-ból egy nagyobb alakzatot. A Minecraftban is tetszés szerint alkothatunk, akár egy nagy alakzatot, akár bonyolult elektronikus rendszereket, amiket normál esetben nem tudnánk alapanyag hiánya miatt.
Multiplayer
A játékot meg kell vásárolni, nincs mese. Alapból egy játékos üzemmódban fut, és a világokat, amiket játszunk lokálisan tárolja a program. Lehetőségünk van viszont egy szerverhez kapcsolódni, és barátainkkal együtt kalandozni egy világban. Együtt bányászni, és építeni. A Minecraft akkora közösséggel rendelkezik, hogy a rengeteg speciális pálya és játékot változtató MOD megunhatatlanná teszi a társas élményt.
Minecraft Server létrehozása
A továbbiakban szeretném bemutatni, hogy lehet egy Minecraft szervert létrehozni. Én Ubuntu 12.04 LTS alatt fogom bemutatni a szükséges lépéseket.
Először is hozzunk létre egy helyi felhasználót, aki nevében fog futni a játék.
# useradd -md /home/minecraft minecraft # passwd minecraft
Bizonyosodjunk meg, hogy van JAVA futtató környezet installálva a gépünkre.
# java -version
Ha nincs telepísük:
# apt-get install openjdk-7-jre
Lépjünk át minecraft user-ré.
# su - minecraft
Töltsük le a server-t és másoljuk a minecraft home könyvtárába azt.
https://minecraft.net/download
Majd indítsuk el a játékot.
$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Ennyi. A probléma, az, hogy a program nem fog a háttérben futni. Amennyiben a szerverrel megszakad a kapcsolat, a program is véget fog érni. Plusz rengeteg hasznos funkciót sem tudunk használni. Server frissítése az új verzióra, világok napi mentése, vagy a program háttérben való futtatása.
Ennek megoldására okos emberek egész összetett scripteket írtak. Én a következőt használom, ami screen-en alapszik. Tehát győződjünk meg arról, hogy van-e screen installálva, ha nincs, akkor installáljuk.
# apt-get install screen
Majd hozzuk létre a következő verzérlő scriptet.
# vi /etc/init.d/minecraft #!/bin/bash # /etc/init.d/minecraft # version 0.3.9 2012-08-13 (YYYY-MM-DD) ### BEGIN INIT INFO # Provides: minecraft # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Minecraft server # Description: Starts the minecraft server ### END INIT INFO #Settings SERVICE='minecraft_server.jar' OPTIONS='nogui' USERNAME='minecraft' WORLD='world' MCPATH='/home/minecraft' BACKUPPATH='/home/minecraft/backup' MAXHEAP=1024 MINHEAP=512 HISTORY=512 CPU_COUNT=1 INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \ -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \ -jar $SERVICE $OPTIONS" ME=`whoami` as_user() { if [ $ME == $USERNAME ] ; then bash -c "$1" else su - $USERNAME -c "$1" fi } mc_start() { if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is already running!" else echo "Starting $SERVICE..." cd $MCPATH as_user "cd $MCPATH && screen -h $HISTORY -dmS minecraft $INVOCATION" sleep 7 if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is now running." else echo "Error! Could not start $SERVICE!" fi fi } mc_saveoff() { if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is running... suspending saves" as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'" as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'" as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" sync sleep 10 else echo "$SERVICE is not running. Not suspending saves." fi } mc_saveon() { if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is running... re-enabling saves" as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'" as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'" else echo "$SERVICE is not running. Not resuming saves." fi } mc_stop() { if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "Stopping $SERVICE" as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'" as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" sleep 10 as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'" sleep 7 else echo "$SERVICE was not running." fi if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "Error! $SERVICE could not be stopped." else echo "$SERVICE is stopped." fi } mc_update() { if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is running! Will not start update." else as_user "cd $MCPATH && wget -q -O $MCPATH/versions http://s3.amazonaws.com/Minecraft.Download/versions/versions.json" snap=`awk -v linenum=3 'NR == linenum {print; exit}' "$MCPATH/versions"` snapVersion=`echo $snap | awk -F'\"' '{print $4}'` re=`awk -v linenum=4 'NR == linenum {print; exit}' "$MCPATH/versions"` reVersion=`echo $re | awk -F'\"' '{print $4}'` as_user "rm $MCPATH/versions" if [ "$1" == "snapshot" ]; then MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$snapVersion/minecraft_server.$snapVersion.jar else MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$reVersion/minecraft_server.$reVersion.jar fi as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL" if [ -f $MCPATH/minecraft_server.jar.update ] then if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null` then echo "You are already running the latest version of $SERVICE." else as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE" echo "Minecraft successfully updated." fi else echo "Minecraft update could not be downloaded." fi fi } mc_backup() { mc_saveoff NOW=`date "+%Y-%m-%d_%Hh%M"` BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar" echo "Backing up minecraft world..." #as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`" as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD" echo "Backing up $SERVICE" as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE" #as_user "cp \"$MCPATH/$SERVICE\" \"$BACKUPPATH/minecraft_server_${NOW}.jar\"" mc_saveon echo "Compressing backup..." as_user "gzip -f \"$BACKUP_FILE\"" echo "Done." } mc_command() { command="$1"; if pgrep -u $USERNAME -f $SERVICE > /dev/null then pre_log_len=`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'` echo "$SERVICE is running... executing command" as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'" sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds # print output tail -n $[`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/logs/latest.log" fi } #Start-Stop here case "$1" in start) mc_start ;; stop) mc_stop ;; restart) mc_stop mc_start ;; update) mc_stop mc_backup mc_update $2 mc_start ;; backup) mc_backup ;; status) if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "$SERVICE is running." else echo "$SERVICE is not running." fi ;; command) if [ $# -gt 1 ]; then shift mc_command "$*" else echo "Must specify server command (try 'help'?)" fi ;; *) echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server command\"}" exit 1 ;; esac exit 0
A script elején lévő #Settings részt természetesen testre szabhatjuk. Ezek után:
Játék letöltése és frissítése a legfrissebb elérhető verzióra (nálam ez CRON-ban is benne van):
# /etc/init.d/minecraft update
Játék világának mentése (szintén szerepel CRON-ban is):
# /etc/init.d/minecraft backup
Játék szerver indítása:
# /etc/init.d/minecraft start
Játék szerver leállítása:
# /etc/init.d/minecraft stop
Játék szerver újraindítása:
# /etc/init.d/minecraft restart
Jéték szerver státuszának lekérése:
# /etc/init.d/minecraft status
Jétékszervernek direkt parancs küldés a screen-be:
# /etc/init.d/minecraft command A_PARANCS
Server config file
A szerverünk egyedi beállításait a /home/minecraft könyvtár alatt egy server.properties file-ban tehetjük meg.
# vi server.properties #Minecraft server properties #Mon Apr 28 05:36:06 CEST 2014 generator-settings= op-permission-level=4 allow-nether=true level-name=world enable-query=false allow-flight=false announce-player-achievements=true server-port=25565 level-type=DEFAULT enable-rcon=false force-gamemode=false level-seed= server-ip=192.168.1.1 max-build-height=256 spawn-npcs=true white-list=false spawn-animals=true hardcore=false snooper-enabled=true online-mode=true resource-pack= pvp=true difficulty=1 enable-command-block=false gamemode=0 player-idle-timeout=0 max-players=20 spawn-monsters=true generate-structures=true view-distance=10 spawn-protection=16 motd=XORP Minecraft Server
A részletekért mindenki nézze át a részletes leírást, itt.
Összegzés
A Minecraft egy nagyszerű játék kicsiknek és nagyoknak is. Egy olyan álomvilágot teremt számunkra, amiben bármit megtehetünk, ha elég türelmesek vagyunk, és nem félünk felfedezni minél több dolgot. Érdemes a youtube-n megnézni pár videót, hogy kedvet kapjon az ember hozzá. Megtanulni az alapvető craftolási szabályokat, és egy picit megérteni a játék lényegét.
Aki pedig kedvet kapott, az csatlakozzon a Xorp Minecraft szerveréhez. A részletes leírás megtalálható itt a Xorp Minecraft szerverről.