Minecraft has you, Neo

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.

Minecraft

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.

minecraft3

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.

minecraft2

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.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük