Scriptnyelvek a gyakorlatban …

Rettentően elmés címem mellett valójában azt szeretném ma leírni, hogy hogyan is kell beépíteni a Pythont illetve a Lua-t saját C++ projectünkbe. Ha eddig nem is lett volna egyértelmű, most már biztos, hogy ez megint egy technikai írás lesz, amit remélem sikerül legalább annyira érdekesre, vagy viccesre megírnom, hogy azért ne aludjon el mindenki a monitor mögött.

LUA

Kezdjük először a Lua val, mivel ez a script áll hozzám közelebb és sokkal jobban is ismerem mint a Pythont, így talán a későbbi botlásokat könnyebben elnézik.

A Lua jelenleg az 5.1 es verziónál tart, C ben fejlesztik és egy eléggé egyedi (már a scriptnyelvek terén) nézőpontot támogat, méghozzá a stack kezelést. Gyanítom ebben rejlik hihetetlen sebességének kulcsa.

A sebességnek viszont mindig ára van, jelen esetben a kicsit sem egyszerű C interface, amivel sajnos meg kell birkóznunk.

#include <stdio.h> 
#include <stdlib.h> 
#ifdef __cplusplus
   extern "C" {
#endif // __cplusplus 

 #include <lua.h> 

#ifdef __cplusplus
    };
#endif // __cplusplus 

int main( int argc, char** argv )
{

    // Lua VM letrehozasa   
    lua_State* State = lua_open();

    // Lua alap libek betoltese 
    lua_openlibs( State );

    // myfile.lua fajl futtatase 
    lua_dofile( "myfile.lua" );

    // MyFunc fuggveny elovetele
    lua_getfield( State, LUA_GLOBALSINDEX, "MyFunc" ); 

    // elso parameter 
    lua_pushinteger( State, 10 );

    // a MyFunc fuggveny felhivasa 1 parameterrel, 0 result al 
    lua_call( State, 1, 0 ); 

    // Lua State lezarasa 
    lua_close( State ); 

    return 0;
}

Mint a kódon láthatjuk egy egyszerű függvényhívás is már egy összetettebb probléma, hát még az objektum orientált függvények, tömb, table változók.

Szerencsére vannak megoldások arra, hogy a Lua is elfogadható és könnyen használható legyen. Mivel a projectekben fontos az, hogy ne hetek, hónapok menjenek el egy egy feladattal, hanem minél rövidebb idő alatt álljon elő olyan eredmény, ami kielégítő működést ad, ezért nem mindegy, hogy mennyire nehézkes a választott scriptnyelv importálása az alkalmazásunkba.

A Lua általam legkedveltebb C++ interface-e a LuaPlus. (Dokumentáció: http://wwhiz.com/LuaPlus/LuaPlus.html)

A LuaPlus al sokkal könnyedebbé válik a Lua használata, úgy, hogy nem vesztünk jelentős sebességet.

#include <stdio.h> 
#include <stdlib.h> 
#include "LuaPlus.h" 

using namespace LuaPlus;

int main( int arcg, char** argv )
{
    // Lua VM letrehozasa es alap libek betoltese 
    LuaState* State = LuaState::Create( true );

    // myfile.lua fajl futtatasa 
     State->DoFile( "myfile.lua" );

    // MyFunc fuggveny elovetele 
    LuaFunction<> MyFuncObject = State->GetGlobal( "MyFunc" );

    // a MyFunc fuggveny felhivasa 1 parameterrel, 0 result al 
    MyFuncObject( 10 );

    // Lua State lezarasa 
    LuaState::Destroy( State );

    return 0;
}

Remélem a példával jól látható, hogy a LuaPlus egy sokkal egyszerűbb, érthetőbb interface, mint az alap C Api. Rengeteg olyan lehetőséget biztosít, amivel komoly Lua bindet építhetünk össze úgy, hogy nem megy el rengeteg felesleges idő a fejlesztésre.

Ami még nagyon hasznos a LuaPlus ban, az az, hogy Nativ és Managed kódhoz is van DLL je, így amit C++ alkalmazásunkban használunk, majdnem ugyan úgy használhatjuk C# toolunk ban is! Ez megint csak csökkenti a fejlesztési időt.

Persze ez is olyan, mint sok más interface, az ember szeret belőle sajátot írni, ami jól is hangzik elsőre, de amint próbálunk a Lua C Api mélyére ásni, rá kell jöjjünk, hogy nem olyan egyszerű feladat.

 

Python

A Python jelentősen más fajta mint a Lua. Személyes véleményem szerint itt sokkal inkább a használhatóság, beépíthetőség volt a fő szempont, mintsem a gyorsaság. Ez egyben előnye, de hátránya is a scriptnek. Előny, a már említett fejlesztési idő miatt és hátrány, a sebesség vesztés miatt. A  Python körülbelül 2 szer lassabb és 1.5 ször több memóriát eszik meg mint a Lua, habár vannak esetek, amikor Ő teljesít jobban. Jelenleg ugye a Pythonból úgymond 2 verzió létezik a 2.7 és a 3.2. Az itt megadott mérési eredmények a 3 as Pythonra vonatkoznak: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=python3&lang2=lua (az oldal nehézkesen működik, úgyhogy néha sokat kell próbálkozni)

De akkor lássuk hogy is építsük be a Pythont a kódunkba:

#include <Python.h> 

 int main( int argc, char** argv )
{
    // Python VM letrehozasa 
    Py_Initialize();

    // hozzaadas a path hoz az aktualis konyvtarat
    // erdemes azt, ahol a python fajljaink vannak 
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append(\".\")");

    PyObject* ModName = PyString_FromString( "my_file" );

    // a sajat fajlunk betoltese mint modul 
    PyObject* Module = PyImport_Import( ModName );
    if ( Module == NULL )
    {
        // ha nem sikerult volna, akkor error es kilepes 
        PyErr_Print();
        return 1;
    }

    PyObject* Dict = PyModule_GetDict( Module );
    // a fuggvenyunk lekerese 
    PyObject* Func = PyDict_GetItemString( Dict, "MyFunction" );

    // ellenorzes, hogy felhivhato-e 
     if ( PyCallable_Check( Func ) )
    {
        // parameter eloallitasa 
        PyObject* Args = Py_BuildValue( "(i)", 14 );
        // a fuggvenyunk felhivasa 
        PyObject_CallObject( Func, Args );
    }
    else {
        // hiba eseten hiba kiirasa es kilepes 
        PyErr_Print();
        return 1;
    }

    Py_XDECREF( Module );
    Py_DECREF( ModName );

    // VM torlese 
    Py_Finalize();
    return 0;
}

Hát elsőre úgy tűnhet, hogy jóval hosszabb kód állt elő, de ennek egy része a fájlunk és annak függvényeinek betöltése, plusz itt van hiba kezelés is, ami jóval egyszerűbb, mint a Lua ban.

A kódból nekem az jött le, hogy sokkal “felhasználó” barátabb, könnyebb a kezelése, pointerekkel dolgozik, így talán kevesebb objektum létrehozás van, mint a LuaPlus ban.

Konklúzió

Mindazok mellett, hogy milyen komoly szavakat ismerek, azt kell mondjam, hogy mindkét script nyelv nagyon érdekes, a használatuk izgalmas és rengeteg sok lehetőség rejlik bennük. Igazából nem is nagyon tudnék dönteni, hogy most melyik tetszik jobban.

Mindkét nyelvhez található IDE és Debugger is szép számmal:

LUA

  • IntellijIDEA– egy multi platform editor, eléggé sok feature el, LUA supportal, ahol saját(!) libeket lehet hozzá adni (van hozzá WoW és Rift Library). Ez nagyon hasznos tud lenni, mert így a saját projectunk függvényeit könnyedén be tudjuk illeszteni, ami segíti a fejlesztést
  • LuaEdit– teljesen ingyenes és eléggé igényes editor és debugger a Luahoz, solution fájlokat kezel
  • Scite– eléggé komoly, multi platform editor minden féle nyelvhez
  • Addon Studio– érdemes megnézni, mit is lehet csinálni egy IDE vel és egy jó script engine el. Persze ez csak egy editor, de itt látható, hogy a WoW Addon / GUI rendszere mennyire flexibilis
  • LuaStudio– egy eléggé komoly és letisztult Lua IDE és debugger
  • Decoda – sajnos fizetős, de természetesen a legjobb IDE és debugger. Előző írásomban már áradoztam róla. Mindent tud, amit kell, főleg a remote debug a kielégítő benne!

Python

  • GDB– most lehet páran megrökönyödnek, hogy hogy lehetséges, hogy a gdb-t valaha is szóba hozom, de jelenlegi munkám során találkozom vele és nem árt, ha a debugger rendszerekből nincs tíz féle. Persze egy designer vagy tester nem biztos, hogy valaha megbirkózna vele, de ettől még egy lehetőség
  • WinPdb– egy multi platformos Python debugger, persze Python ban. Ingyenes, és egyszerűen mindent tud, amit egy debuggernek tudnia kell, mindamellett, hogy még igényes is! Természetesen alapból remote debugging, úgyhogy nagyvalószínűséggel a szerveren futó Python scripteket is gond nélkül debuggolja
  • PyScripter– open source IDE és debugger, meglepően jó syntax highlight al és code completition el!
  • WingWare – fizetős program nem is próbáltam ki, a WinPDB és PyScripter után azt hiszem teljesen felesleges

 

Mindent összevetve mindkét nyelvhez vannak iDE-k és Debuggerek is, mindkettőhöz jól használhatóak a programok, viszont a Pythonnak 1 nagy előnye van: GDB, hisz nem árt, ha az ember egyből tudja debuggolni, ha akár a saját alkalmazásában hal el a script.

Nekem személy szerint az újdonság erejével tetszik a Python nagyon és abban a szerencsés helyzetben vagyok, hogy szórakozhatok mindkettővel, de hogy melyiket használnám egy projectben … az még számomra is kérdéses, ehhez azért sokkal több konkrétum kell és egy jól megfontolt döntés!

 

Addig is remélem van akinek felkeltettem az érdeklődését az alábbi 2 irományommal és kedvet csináltam némi scriptelgetéshez! Jó szórakozást mindenkinek!

Python, Lua azaz scriptnyelvek

Végre egy technikai téma, mondhatnánk, remélem értelmes lesz mindaz amit itt majd le szeretnék írni.

A mai játékok szép számmal tartalmaznak script nyelveket. Leginkább a Lua vagy a Python nyelv lehet ismerős. Egyre ritkábbak a saját script próbálkozások (mint például az Unreal Script).

Jelen írásomban a Luaról és a Pythonról fogok írni, megpróbálom összeszedni, miért is jó dolog a script, melyik mennyire jó, hol használják és mire.

Sokkal több játékban vannak scriptek, mint hinnénk, hisz a mai modern nyelvek már eléggé jól beépíthetőek, elrejthetőek, viszont vannak olyan esetek is, amikor a script a játék szerves része, a fejlesztők bátorítják a játékosokat, hogy minél több úgynevezett addont írjanak, ezzel is bővítve a játék tudását.

De akkor lássuk is, hogy mi mindenre lehet jó egy scriptnyelv egy program fejlesztésekor, főleg játék fejlesztésekor. Ha valaki ki tudja egészíteni, azt szívesen veszem.

    • Prototipizálás –  egy nagyon jó megoldás, ha a designerek a játék motorját használva egy scriptnyelvel próbálgatják a lehetőségeket. Minél komolyabb Script Engine van a játékunkban, annál több problémát tudnak megoldani, annál jobb utat találnak arra, hogy a játék sikeres legyen. Mivel egy engine-t nem csak egy játékhoz fejlesztünk (többnyire), ha nem is az első, de a második játéknál már egészen biztos behozza a ráfordított időt.
    • Design kódok – egy játék fejlesztése során sok olyan kód készül, amik a designerek kénye kedve szerint változik. Leginkább a skillek, AI vagy épp a GUI ilyen. Ezek legtöbbször olyan feladatok, amik tipikusan egy scriptnyelvnek valók. A játék engine ad bizonyos lehetőségeket a skill, AI vagy GUI rendszernek, ha ezeket a lehetőségeket kivezetjük egy scriptnek, akkor a designerek, vagy GUI fejlesztők átírhatják, alakíthatják ezeket a működéseket. Ez is egyfajta prototipizálás, de kevesebb fejlesztés, viszont általában csak egy projectet szolgál ki.
    • Triggerezés – a trigger rendszer egyik napjainkban elterjedt módja, hogy script nyelveket használnak. Ez komoly szabadságot ad a designereknek arra, hogy a pályákat egyedire építsék. Először egy RTS játékban találkoztam ezzel a megoldással (Codename Panzers: Cold War), ahol nagyszerűen működött. Persze ahol a sebesség mindennél fontosabb, ott erősen meggondolandó, hogy szükséges-e ez a megoldás.
    • GUI rendszer – egyre több helyről hallom, hogy egy játék, vagy program teljes GUI rendszere, logikája, scriptnyelvre épül. Talán a legismertebb példa maga a World of Warcraft, ahol az addonokkal tetszőleges ablakokat, widget elemeket hozhatunk létre és vezérelhetjük Őket, sőt, ha azt akarjuk a Blizzard által biztosított alap GUI interface-t 100%-ig átalakíthatjuk a saját kedvünkre. Ez a megoldás óriási flexibitást ad a GUI tervezésekor, fejlesztésekor, arról nem is beszélve, hogy a játék élettartalmát is képes meghosszabbítani, hisz a játékosok vagy fejleszthetik, vagy a mások által fejlesztett módosításokkal szinte egy új játékot játszhatnak.
      Blizzard FrameXML: WoWWiki –n találhatunk némi leírást arról, hogy mit is alkotott meg a Blizzard. A FrameXML hez hasonlóan ezt a megoldást már több MMORPG nél láttam. Jó megoldás, persze nem kevés fejlesztést igényel, de cserébe egy olyan GUI Rendszert kapunk, amivel bármit meg lehet valósítani és ha ésszel készítjük el, akkor jó sok projectet kiszolgálhat.  (ActionBarFrame)
    • Addonok – na igen, ez egy nagyon általános megfogalmazás, de sajnos nem találtam jobbat. Az addon rendszer nagyon hasznos lehet egy játékban, akár évekkel is elnyújthatja a játék élet ciklusát, jelentős terheket vehet le a fejlesztők válláról, illetve jelentősen csökkentheti a fejlesztési időt. Másik járulék az olyan addon oldalak, ahonnan a játékunkhoz tartozó addonokat letölthetik a játékosok. a Curse oldalán 4.500 WoW addon található, az egyszerű “Hello világtól”, egésszen a Grid nevű addonig, ami eléggé sok mindent tud (és nem mellesleg 4.5 millió (!) letöltése van, ami már egy teljes játéknak is jó lenne, nem hogy egy addonnak).
    • Content – vagy akár Quest rendszer is lehetne. A Pirates of the Carribean nevű játékban volt megoldva az egész játék menet scriptelve. Itt egy C syntax script nyelv volt, amit indításkor fordított le a játék. Rengeteg kiegészítő készült a játékhoz, amivel jelentősen megváltoztatták a játék menetet!

A megvalósítások után nézzük meg, hogy milyen scriptnyelvek vannak, azaz inkább azt, hogy én miket ismerek, amik szóba is jöhetnek.

Arra, hogy mi mindenre képesek ezek a nyelvek nem nagyon akarok kitérni, hisz mindegyik képes C függvények felhívására, ami mindenre képessé teszi Őket. Habár itt felmerül egy bónusz kérdés, mégpedig a C#. Persze nem megoldhatatlan feladat, ha már tudnak native C kódot hívni, hogy C# ot is elérjék, illetve a C# elérje a scriptet, de azért a legjobb az, ha ez a rész már meg van valósítva és mindezt valakik mások valósították meg. (Igen ezen a területen kicsit ellentmondásos vagyok Önmagammal, hisz mindig azt mondom, hogy mindent nekünk kell megvalósítani, akkor lesz kellően optimális, de egy komoly script nyelv elkészítése, a hozzá tartozó összes toolal … nem kicsi feladat.)

Vágjunk hát bele.

 

Számomra legjobban ismert scriptnyelv, a Lua.

A Luanak rengeteg előnye van és alig akad olyan hátránya, amit komolyan fel lehetne neki vetni.

  • Sebesség – rettentően gyors, gyorsabb mint minden más script nyelv, amivel eddig találkoztam. Az alap rendszer nagyon letisztult, nem zsúfolják tele minden féle extra felesleges feature el, ezt meghagyják a betölthető moduloknak
  • Memória használat – ugyancsak verhetetlen, pont azért, amiért gyors is. Az alap rendszer nem sok mindent csinál és amennyire lehet agyon van optimalizálva
  • Binary format – nem is tudom mennyire lehet felhozni ezt előnynek, hisz ma már alapvető elvárás ezeknél a scripteknél
  • User friendly – a Lua nagyon egyszerű, jól átlátható, a számomra általános nyelvekre hasonlít (C, JavaScript, PHP, Java) emiatt könnyen tanulható, de mégsem típusos, nincs benne pointer, vagy bonyolult alacsony szintű adatkezelés, emiatt nem csak programozóknak, hanem designereknek, grafikusoknak, tesztereknek is könnyen emészthető
  • Toolok – a Lua hoz nagyon komoly editorok és debuggerek találhatóak a neten. Egyik személyes kedvencem a Decoda, ami egy eléggé komoly IDE / Dedugger. A Lua VM hez kapcsolódik, így nem kell nekik külön kód support. (Lua Tools)
  • SDK – ez kicsit kétélű a Lua val kapcsolatban. Maga a Lua source szinte teljesen átláthatatlan, viszont készül sok féle C/C++ implementáció (és C#, Java, sőt, még Python is), amik sokkal jobban használhatóak. Személyes kedvenc ismét a LuaPlus. Sajnos binary kiadásban 2010 es a legfrissebb, amit nem is nagyon értek, mert a weboldal logjait nézegetve alig pár napos az utolsó commit. Reméljük az érkező 5.2 es Lua nál frissítik a binárisokat is. (főleg mert a source hoz Jam al kell legenerálni a legeneráló fájlokat, nem is értem hogy jut eszébe ilyesmi bárkinek is …)
  • Multi platform– igen igen! A Lua multi platform. Főleg, hogy a Lua5.1 source-a annyira ansi, hogy szinte bármire le lehet fordítani, de jó sok előre fordított bináris is van. (LuaPlus is fordul Linux alá, némi módosítással). Linux/Windows/Xbox/PS/Kb minden okos telefon
  • Modulok – azt írtam, hogy az alap rendszerbe nem akartak sok mindent zsúfolni, viszont a modularitása komoly figyelmet kapott. Rengeteg modul készült a Luahoz, amivel már szinte bármit meg tudunk csinálni (OpenGL,D3, hálózat, Windows Forms, GTK+, adatbázisok és még sorolhatnám). Saját magunk is nagyon egyszerűen fejleszthetünk hozzá saját modul-t ami így könnyebben portolható a projectek között.

Egyszóval a Lua rendkívül sokoldalú és jól használható script nyelv, rengeteg olyan tulajdonsággal, ami egy játékfejlesztés, vagy bármilyen más fejlesztés során fontos lehet. Az alap C Lua5.1 es kód (most ez a legújabb, de már készül az 5.2, ami most beta), nehezen érthető, nehezen átlátható, nem a legkönnyedebb, de vannak hozzá olyan C++ kiegészítők, wrapperek, amik könnyűvé teszik a használatát, de nem lassítják jelentősen.

Játékok amik biztos, hogy Lua-t használnak:

  • Codename Panzers: Cold War
  • World of Warcraft
  • Warhammer Online
  • Alods Online
  • Rift
  • Sim City 4
  • CryEngine
  • Supreme Commander
  • Heroes of Might and Magic V
  • S.T.A.L.K.E.R.
  • Homeworld 2
  • Maffia II

és még sokan mások:

http://lua-users.org/wiki/LuaUses
http://en.wikipedia.org/wiki/Lua_%28programming_language%29

Nem kevés alkalmazás is a Lua-t választotta, és ami még számomra is meglepő volt, hogy az Apache nak is van Lua module ja és a MySql nek is!

 

Egy másik lehetőség a Python.

A Python egy nagyon komoly script nyelv, amit leginkább Linux alatt láttam rendszer szintű scriptek írására. Rengeteget tud, viszont számomra érthetetlen módon mintha próbálna minél jobban különbözni minden más programozási nyelvtől. Ettől függetlenül sok játékban, alkalmazásban használják, nem kevés előnye miatt.

  • Fejlesztés – a Python open source, alapvetően Linuxos technológia, ettől fogva komoly fejlesztés van mögötte. Jelenleg a 3.2.1 es verzió a legújabb ami éppen egy nagy átmenet és a rendszerek még a 2.7 es verzióval jönnek. (pl a Linuxban is 2.7 es van még, illetve a kikerülő alkalmazások is inkább ezt javasolják)
  • Modulok – hát nem kevés kiegészítő található a Pythonhoz sem. Mivel a C összekötése nagyon egyszerű, mindenki mindent megírt alá, amit nagyon könnyen lehet implementálni. A Linux is nagyon sokat dobott ezen a dolgon, mivel megadta neki azt a keretet ami a Luatól nagyon hiányzik.
  • SDK – még nem nagyon néztem szét, hogy milyen C/C++ interface ek vannak a Python hoz, de az alap, amit a Python-dev csomaggal adnak (vagy ami a Python Windowsos source ban van ugye), az annyira borzalmasan egyszerű, hogy az egész dokumentációja 1 oldalt tesz ki. Emelett az IronPython egy eléggé komolyn .NET es implementációnak tűnik, ami ugyancsak komoly fejlesztési figyelmet kap.
  • Típusok – ez nem lenne alapvetően előny, de ahogy a Python oldotta meg, úgy mégiscsak az. Alapvetően a Python nem típusos nyelv, azaz nem kell megadni hogy valami string vagy int, de ettől függetlenül lehetőség van a típusok használatára, amihez a Python eléggé sok eszközt ad
  • Objektum orientáltság – a Python eléggé komolyan képes objektum orientált lenni, még öröklődés és többszörös öröklődés is van benne: Az OOP nem egy erőltetett valami típusra ráhúzott “hack” mint a Lua ban, hanem valódi, jól megvalósított eszköz, exceptionökkel, öröklődéssel, private változókkal, konstruktorral
  • Multi platform – a Python is rengeteg platformon elérhető. Linux/Windows/Xbox/PS (IronPythonról szólnak Xbox os cikkek). Linux az biztosan működő képes, mivel erősen Linux párti a Python. Maga a Python interpretert láttam már futni Windowson, de még nem néztem meg, hogy mennyire nehézkes saját Python libet csinálni Windows környezetben. A többi platformról még kevesebbet tudok

Hát igen, mindenképpen azt kell mondjam, bármennyire is Lua párti vagyok, hogy a Python egy nagyon nagyon csábító alternatíva. Viszont ameddig a sebesség döntő tényező (már a program futási sebessége), addig a Python komoly hátrányban van, mivel lassabb mint a Lua.

Pár általam ismert játék, ami Pythont használ:

  • EVE Online
  • Battlefield 2 és 2142
  • Civ IV
  • Battlefield Heroes

Mondhatnám, hogy és még sokan mások, de nem nagyon találtam említésre méltó neveket, akik Pythont használnának. Viszont a Python is rengeteg Game Engine kiegészítést tartalmaz! A PyGame egy külön game engine, ami Pythont használ!

 

Némi extra információért az alábbi linkeket tudom még javasolni:

http://lua-users.org/wiki/LuaVersusPython

http://web.archive.org/web/20040916084425/http://www.bagley.org/~doug/shootout/craps.shtml

http://lua-users.org/wiki/LuaComparison

http://en.wikipedia.org/wiki/Comparison_of_programming_languages

http://www.mvps.org/scripting/languages/

Panzer Corps

Igen igen egy játék már megint! Méghozzá nem is akármilyen, hanem a Panzer General remake je a Panzer Corps! panzer-corps-Logo

Aki esetleg nem ismerné a Panzer General-t annak elmondom, hogy talán az eddigi legjobb körökre osztott stratégia volt, amit eddig láttam! A nevéből kitalálható, hogy II. Világháborús játék, ahol a kampányt a német oldalon játszhattuk, a cél pedig ugyan az, Európa / a Világ elfoglalása! A játékban erre volt is lehetőség, ha az ember az elején ügyesen játszott, 1941 ben partra szállhatott Angliában, majd onnan az Egyesült Államok keleti partvidékén és irány Washington! Persze komolyabb nehézségi beállításnál (értsd Hard) erre nem sok esély volt Mosolygó arc

No de nézzük a Panzer Corps ot. Már említettem, hogy a remake ek milyen botrányosan szoktak sikerülni (ugye a Mindíg csak a hülyeség … című írásban erről már esett szó Mosolygó arc), de ezzel szemben a Panzer Corps –t valahogy sikerült jobbra megcsinálni, mint az eredeti játékot! Bombing Cracow

Először is a játék grafikáját jelentősen felhúzták, de nem erőltettek bele újfajta perspektívát (ami miatt számomra a Panzers 3D komolyat bukott!). Az egységek 3D modellekről lettek renderelve ugyan olyan beállításban, ahogy az eredetiben volt.

Fejlesztettek az effekteken is, minden sokkal sokkal látványosabb, de nem zavaró, nincs eltúlozva, egyszerűen felismerhetőek.

A GUI is sokat változott, mivel több hely van (ugye nem 320×200 Mosolygó arc) ezért sokkal több mindent kitettek, de a térkép így is jól átlátható maradt (arról nem is beszélve, hogy a görgővel ki és be lehet zoomolni)panzercorps_GustavStats

Az egységeken nem változtattak, viszont kerültek be új egységek, amik egyáltalán nem rontottak a helyzeten, sőt! Jelentősen érdekesebbé és “valódibbá” tették a csatákat!

Van pár új feature is, ami bekerült a játékba, mind olyan, ami vagy könnyített a vezérlésen (nem a játék meneten!) vagy olyan, ami sokkal élvezhetőbbé tette a játékot!

Itt már nem 3 szint van (Easy, Normal, Hard), hanem 5, így kicsit jobban be lehet lőni, mi az ami még szórakoztató, de nem túl könnyű.

Játék közben azon egységek, akiknek van transzportja, azoknál automatikusan mutatja, hogy be kell “csomagolni” ahhoz, hogy odáig eljusson. Ha ilyen mezőre kattintunk, akkor a becsomagolást magától elvégzi, majd a következő körben kicsomagolva kezdi a kört az egység! (mondhatjuk: VÉGRE! Mosolygó arc)

Másik újítás a vonat. Az eredetiben volt hajó, repülő és teherautók, itt bejött a vasút is. Olyan városokban ahol van vonat állomás feltehetjük az egységeinket a vasútra és elvihetjük Őket jó messzire. A vonat 1 kör alatt rengeteg utat tud megtenni, de ugye csak ott, ahol van sín!

Hős

Nem kihagyható a Hősök bevezetése a játékba! A Panzer Generalban is volt már, hogy az egységek kitüntetéseket kaptak, amiket megnézhettünk az adat lapjukon, de úgy különösebben sok jelentősége nem volt, vagy legalábbis én nem vettem észre. Viszont a Panzer Corps ban (persze ugyan úgy vannak kitüntetések) az egységek között hősök születnek, amikről a program értesít is minket! Ezek az egységek pedig bónusz értékeket kapnak, amiktől jobban harcolnak! Szóval a Hőssel rendelkező egységekre érdemes extrán oda figyelni!

 

Egyszóval a Panzer Corps egy nagyszerű játék és bátran ajánlom mindazoknak, akik szerették a Panzer Generalt, egészen biztos, hogy ez a játék is tetszeni fog nekik!

Harcra fel!

Érdekességnek ajánlom: http://www.achtungpanzer.com/ – sok sok II. Világháborús német tank és leírás, történetek, képek, információk!

Rift vagy nem Rift …

Hát igen, megint a Rift, pedig volt már róla szó, de azt hiszem érdemel még néhányat.Rift Nem ez az első MMORPG amiről azt hallottam, hogy WoW verő lesz, de ez az első, amiről el is hiszem. Amikor kipróbáltuk azt hallottam minden honnan, hogy unalmas, nincs benne end content, senki sem játszik vele … de hát ez annyira még nem tántorított el. Megnéztem vannak-e hozzá addonok, mert hát egy igazi MMORPG fokmérője az, hogy van-e hozzá addon … a http://rift.curse.com/ on alig egy pár van, de azoknak sincs meg a helye, hogy az ember hova tegye Őket … ez megmondom őszintén kissé elbizonytalanított. Na de akkor maga a játék … csupa őrület, kb. szó szerint, ugyanis a kezdő területen egyszerűen annyi minden van, hogy nem győzünk utána rohangálni. Szerencsére minden ami a WoW ban idegesített az itt úgy lett megoldva, hogy NE idegesítsen. Akár lvl1 en lehet az embernek lova, ha van pénze, a komolyabb cuccok accounthoz vannak kötve, a temetők nem 10 perc sétára vannak, a 4 szinttel magasabb mobokat nem 2 ütésből ölöm meg és vannak igazi world eventek! Méghozzá nem is akármilyen inváziók vannak itt!

Invasion

Ez a lvl1-lvl19 es kezdő terület, ahová a gyakorolgatás után érkeznek az emberek. Igaz eleinte lent délen vagy, ahol csak néha vannak riftek, de hát onnan hamar eljön mindenki Mosolygó arc 

Egy egy ilyen invázó közepén ott lenni és nyomni a gombot marha érdekes, persze lehet mondani, hogy az ember hamar megunja, habár a WoW ból borzalmasan hiányoztak az ilyen Open World eventek, ahol nem csak a mobokkal de PvP serveren akár egymással is lehetett küzdeni!

Life Rift

A legjobb az egészben az, hogy képesek voltak mindezt úgy megoldani, hogy nem a nagyon erős, csak kocka idióták tudják megcsinálni, de azért az ügyesebb játékosok kihívásokkal találkoznak! Vannak ugyanis eme Rift ek, amikből van pár féle, mind meghatározza, hogy milyen mob jön ki belőle. Ezeknek a Rifteknek vannak szintjeik is, így azt is megmondják, hogy milyen erős az, ami kijön, ergó szépen be tudod magadnak osztani, hogy éppen mivel akarsz megküzdeni! Nagyon hatásos! Arról nem is beszélve, hogy vannak RAID Riftek, amikhez ugye komolyabb társaság kell, gondolom jóval komolyabb felszereltséggel Mosolygó arc

A Rifteknél lehet Public Groupba csatlakozni, ha van ott bárki más, és akár egy grouppá vagy raidé össze lehet állni, és úgy csetepatézni Mosolygó arc Ez általában jól is működik, nekem eddig nem volt vele gondom (de én még csak a kezdő területet láttam!)

Na igen, és épp ma jött ki új patch! Vacak 1GB nyi, amiben új Rift et tettek be, méghozzá PvP Riftet. Erre kíváncsi leszek ha oda jutok!

Apropó PvP Mosolygó arc természetesen kipróbáltam. Hétköznaponként munkaidőben (mert hogy szabin vagyok) is jóval kevesebb a várakozási idő, mint a WoW ban, tehát lehet PvPzni és mivel vagy jobb a WoWnál, vagy ugyan olyan, alapból onnan lépsz be a PvP be ahonnan akarsz (milyen meglepő …), van egy csomó Daily quest, hétvégén dupla pontok, most hoztak be új PvP Warfrontot (az ugyan az mint a Battleground), van egy csomó frakció, vannak PvP itemek, külön lehet venni PvP talentet (nem 1000 goldért, hogy tudjál instázni), 2500 valor ért (ami a honor).

PvP

Mindezek mellett van pár olyan kiegészítés a Rift ben ami nagyon hiányzik mindenhonnan. Ilyen apróságok, ha ki alt tabolok a Rift ből, akkor leveszi a hangot, de ha megtámadnak, akkor villog a taskbaron az ikonja!! Ilyenkor lejjebb veszi az FPS-t is, hogy ne egyen annyi processzort!

Minden ablak mozgatható, van benne külön Layout editor, amivel mindent mozgathatunk, átméretezhetünk, opacity-t állíthatunk.

Az engine is sokkal sokkal fejlettebbnek tűnik, sokkal részletesebb, szebb mint a WoW-é és még így is jobban fut. A fővárosban nem 2 FPS, pedig kb maxra van húzva, és történés is van!

Instance-t én még nem próbáltam, de azt mondják, hogy jó! Az látszik, hogy a fejlesztők teszik bele a contentet (most jött még 1 10 es raid instance, megjelent a cross shard looking for group (shad = server), WoW ban jó sokat kellett rá várni és mindezek mellett mind ahogy már írtam, nem idiótáknak fejlesztik, hanem komolyabb játékosoknak (persze eljöhet az idő, amikor más sok lesz itt is a rinya, hogy jaj jaj nem akarok játszani, csak kell az epic … habár ezt is megoldották, mindenki kaphat epicet egyből Mosolygó arc)

 

Szóval én javallani tudom a játékot csak, mindazoknak, akik valami komolyabban akarnak játszani mint a WoW, mert ez tényleg jobb!

Linux Linux .. ég veled …

No hát, meg is lett az uninstall … sajnos azt kell mondjam idegesítő egy dolog ez a linuxos grafikus felület. Mivel a Gnome annyira nem tetszett és több volt benne az apró bug, mint amennyit el tudtam volna viselni, így hát úgy döntöttem vissza teszem a KDE-t hisz az szebb és több szolgáltatás van benne (pl átállítható a bejelentkező képernyő Mosolygó arc)

Pár perc install után, gondoltam feltelepítem az új Nvidia Drivert … na ez nem ment, sajnos a modul, amit le akart cserélni használatban volt (pár Ubuntu weboldal írt arról, hogy kell eltávolítani, de nem volt kedvem egyszerű felhasználóként Linux kernel source al bajlódni …) semmi baj, a KDE ben van egy driver telepítő, ami igaz, hogy fél évvel régebbi, de állítólag megbízható drivert telepít. Itt b@sztam el … először az ablak effectusokról beszélt, hogy hát azokat nem lehet aktiválni, mert valamiért nem lehet, nézzem meg az X11 konfigurációját (persze Mosolygó arc rohantam is Mosolygó arc), nem baj mondom, akkor legyen restart … újra indítottam, erre csak a kis monitoron volt kép, de a taskbar az eltűnt … oké akkor restart, erre valami lefagyott és feljött egy ablak, hogy küldjem el a hibajelentést, mondom oké, mehet, nincs jogom hozzá, oké, akkor nem Mosolygó arc restart megint … semmi változás, megnéztem az xorg.conf ot, ami mindossze 83 byte méretű volt, valami csak nagyon kevés információt mentett ki, nem baj felülírtam a mentéssel, majd indítottam a KDM et …

Most már volt 2 monitorom, de a menü sehol, ablakokat nem lehetett áthúzni és a nagy monitoron nem érzékelte ha billentyűt ütöttem le … mindezek mellé persze az ablakok kereteit rosszul renderelte …

Tudom, tudom, én voltam a béna mert az XY kernel beállítással, meg ha a megfelelő modult és a proc file system bizonyos helyére … nem érdekel … a Linux 10 év alatt eljutott oda, hogy tud valahogy dual monitort kezelni … kell neki még 10 év hogy grafikus felületet is tudjon kezelni …

Lássuk be (én belátom), hogy az eddig szkandált jelszavak idejét múltak (amennyiben desktop PC nek akarjuk használni!!)

– Nem stabilabb (4 szer fagyott le, abból 2 szer úgy, hogy csak a reset segített)

– Nem szebb (a Windows 7 Aero összeszedettebb, átgondoltabb és nincs render hiba, sem kilógó betű)

– Nem egyszerűbb (sokkal sokkal sokkal bonyolúltabb)

– Valóban testre szabhatóbb, csak ebben az esetben a stabilitás ami amúgy sem csúcs, egyszerűen a 0 ra zuhan

– Nem gyorsabb (az ablakok renderjei, a mozgatás mind sokkal sokkal lassabb volt)

– Nem tud többet (még 1 szaros blog szerkesztőt se lehet találni rá, ami legalább tized annyit tudna mint a Windows Live Writer)

– Nem biztonságosabb (kéri a jelszót mint az őrült mindenhez, teljesen feleslegesen, amivel annyit ér el, hogy mindenki mindenre csak beírja, mert hát lássuk be az egyszerű felhasználó nem fogja tudni megállapítani, hogy az a valami vírus-e, csak azt látja ez is valami bonyolult ezer paraméteres parancs mint a többi)

 

Szóval számomra, komoly akarás után is a Linux (GRAFIKUS FELÜLETE!! ezt szeretném nagyon hangsúlyozni), komoly bukás volt. Még úgy is, hogy állítólag valamennyire értek hozzá … teljesen használhatatlan, mert nem tudok mást mondani, az volt, használhatatlan, fagyott, eltűntek a beállítások, nem volt 3D gyorsítás …még szerintem 2D se … szóval Windows – Linux 10 – 0

Azt a 22.000 ft ot amibe egy Windows 7 Home 64 Bit OEM kerül azt bőven megéri kifizetni egy Ubuntu Linux helyett,mert az ember igényes, minőségi szolgáltatásokat és operációs rendszert kap, az ingyenes buhera OS helyett … (az a baj ez minden open source free dologra igaz, csak vannak akik nem látják be …)

Windows 7