Metin2 + HTML5? 2017. december 30., szombat - 17:40


Utolsó bejegyzésem az évben, és pont/megint Metin2 a téma. De ez van.

Már napok óta gondolkodok ezen - úgy csinálnék egy Metin2 klónt – még ha csak olyat is, hogy .. na, értitek.. Egy leegyszerűsített valamit szeretnék, amiben csak annyit akarok, hogy a modell(ek) az eredetik legyenek. Meg azok textúrája.

A terv az, hogy valahogy exportálok a Metin-ből néhány modellt, ThreeJS lesz a grafikus motor, Node.js + SocketIO lesz a hálózat alapja. Én meg hozzáadom a "programozást" (azt hiszem, hogy ezt inkább valami eseményvezérlésnek kéne nevezni, mert nem sok programozási tudás kell, ha már a grafikus rész megvan).

Instán közzé is tettem egy képet már, de nem túl szép (mobilfotó laptopképernyőről), ezért ide másikat rakok fel, azóta lett pluszba haja a karakternek:


Ez most egy térben körbeforgatható cukiság.

A probléma most az, hogy bár a 3dsmax7-tel  sok dolgot lehet kezdeni a Metin2-es, pack mappából kicsomagolt gr2 model- és skeleton infókat tartalmazó fájlokkal, de nem igazán sikerül magát a csontvázat exportálni. A hozzájuk tartozó textúra .DDS formátumban van, de azt a legelső online converter találat tökéletesen átdobja PNG-be.

A .GR2 fájlok viszont nem ilyen egyszerűek. Az egyetlen opció, hogy a "gr2meshconv1_3" stuffal át lehet őket dobni .SMD és .MS formátumba. Az előbbi a Half-Life 1 modellformátuma, az utóbbi pedig lefuttatható szkript a Max-hoz.

A helyzet az, hogy két modellezőt használok egyszerre, a 3DS Max 7-et és a Milkshape-et. Viszont egyik sem tudja importálni a .SMD fájlokat, hiába generálja/konvertálja őket a "meshconv". Hibásak, vagy ilyesmi. Nem megfelelő formátum. Pedig abban a csontváz- és animáció IS benne lenne... Micsoda véletlen.
Sajnos a .MS fájlokban csak a vertexek vannak, így mint látható a képen is - el tudtam menteni a modellt OBJ formátumba, de nincs hozzá csontváz, animáció..

Így állok most.. Keresgélem a megoldást. Legrosszabb esetben meganimálom én, bár abban nem lesz köszönet.. xD

Edit: (20:22)
Hát, nem lett megoldás. Ugyan a 3ds max betölt valami csontváz-szerűséget, ha a .GR2 fájlt egyből importálom, de ha azt tovább exportálom, onnantól nem bone-okként lesz mentve, hanem vertexekként, az meg nem poén. És nem nagyon találtam módot arra a problémára, hogy: triangle to bones. Hiába is írja a max, hogy azok bizony csontok.. (Csak szerinte.)

Ezért nekiálltam magam a csontváznak, az fél óra sem volt, gyönyörűen megcsináltam, viszont a megfelelő vertexeket hozzáilleszteni már művészet, annyira lassan is halad. Az autoweld nem igazán jöhet szóba, az ... sok egyéb (test)részt is a bone-hoz ragaszt, és idiótán néz ki a forgás, ezt bizony "manuálisan" kell csinálni.. Egy kar már kész, plusz a hát/has.. Hátra van a másik kar meg a két láb. A láb talán gyorsabb lesz, a karon sok kis bizbasz van (a nindzsa feketeszélen), aminek az alkarral kell forogniuk, így .. óvatosan haladok..


Edit: (12. 31.)
Sikerült elaludnom. Reggel 7-ig fent voltam, az ÖSSZES létező lehetőséget kipróbáltam, vagy letöltöttem. Egyszerűen hihetetlen, de NINCS működő, vagy én nem találtam. Mármint a .GR2 fájlok animációjának exportálására. Ugyanis ha a fájlban csak animáció van, de nincs se csontváz, se mesh, akkor kb. minden program beadja a derekát, nem próbálja meg visszakonvertálni, vagy hibával meghal.

Ezt olyan szinten mondom, hogy egy még félkész GitHub-os projektet töltöttem le, amit videókkal támasztott alá a srác (hogy nála már néha-néha működik), és ez nekem a karaktermodellt FBX-be átkonvertálta simán, de az animációs fájloknál kiakad. Egyébként a Neverwinter-hez készíti hivatalosan, nem Metinhez.
Ha az ő alkalmazását használom, ez a vége:


Aztán a Divinity-hez is készült valami cucc exportáló, ez nézett ki eddig a legpofásabban, de soha nem importálta még a .GR2-imet, mert hibás a header rész, tuti nem is gr2-t akarok használni (valójában). Semelyiket nem engedi, függetlenül, hogy van-e benne anim, vagy sem.

Ezen kívül még amihez nagyobb reményeket fűztem, az a Nexus Buddy 2 volt, ez pedig a Sid Meier féle Civilization V-höz készül(t), asszem', és itt, de főleg itt a fórum téma, ahol leírják részletesen, mi van. Nekem ez azért nem sikerült, mert maga a Nexus folyamatosan appcrashelt, olyan hibakóddal, amire mindenki azt írja neten, hogy "telepítsd újra a .NET keretrendszer 4.0-dat". Ez hülyeség. Főleg, hogy ezt a PC-men is kipróbáltam, ugyanaz a hiba, ezen a laptopon 4.5.2 van (asszem'), azon kerek 4, egyiken sem jó, illetve ugyanaz a hiba. Ha rosszul adod meg az indításnál általa bekért elérési utat, akkor crashel, DE a Regedit-ből a Firaxis-ra rákeresve megtalálhatod a kulcsát, valami ToolIzé sor, ha törlöd azt a sort (vagy az egész mappáját), újra kéri a Path-ot, tehát no crash.. Lehet próbálkozni a leírás alapján. (Talán este [máris mindjárt este van, miért keltem 15:00-kor?] letöltöm az egész Civilization V-t, úgy nem lehet hiba, hogy az Assetek mappát nem találja.)

És ezen kívül is próbálgattam mindenféle hülyeséget, csak egyet nem - a direkt skeleton exportálás nevű "gr2skanim_1_2_Max2008"-t. Mivel a nekem letöltött 3D Studio Max az csak 7-es verzió. De a másik gépre talán szintén este letöltöm a 2008-ast (utálom ezt a sok szemetet), és úgy esetleg működni fog.. Ide nem is írok többet ezzel kapcsolatban, csak ha sikerül. Már így is regény.


Node.js, Socket.IO - 2# alapok 2017. december 28., csütörtök - 16:34


Ahogy írtam, egy videó formájában szeretném ezt a fél órát kitölteni. Pár apróságot még írok majd a videó alatt, itt a bejegyzésben, hogy mik a használathoz elengedhetetlen parancsok/kódsorok.



A projekt


Az új projektedhez hozz létre egy mappát az előző fejezetben kitárgyalt "package.json" mellé.
Ebbe a mappába kell minden hozzá tartozó fájlt raknod - persze almappákat használhatsz benne.
Első sorban hozz létre egy "index.js" nevű fájlt. Ez lesz a szerver kódja, amit a Node futtat.
Tipp: Hogy ne kelljen mindig parancssorból elindítanod, csinálj egy "akármi.bat" (én server.bat-nak szoktam elnevezni) fájlt, amibe ennyit másolj bele:
node index.js
pause
Nyissuk meg az "index.js" fájlt, amibe pár alap sort kell gépelni. A videóban röviden elmondtam, hogy mi miért kell, de akit érdekel utánaolvashat (illetve valamennyire egyértelmű is):
const express = require("express");
const app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static(__dirname));

/* új változókat, funkciókat itt hozz létre */

io.on('connection', function(socket) {
  /* ide jön a bejövő adatok vizsgálata */
});

http.listen(1337, function() {
  console.log('A szerver fut az 1337-es porton.');
});
A bejövő adatok vizsgálata részbe pedig funkciókat tudsz pakolászni, amik egy jelzésre figyelnek.
socket.on('test', function(data) {
  socket.emit('onlyForSender', data);
  io.emit('allConnected', data);
});
Ha a kliens küld a szerver felé egy 'test' "üzenetet", akkor a szerver csak neki visszaküld egy 'onlyForSender' nevű üzenetet, mindenkinek pedig (beleértve a küldőt is) egy 'allConnected' üzenetet. Így tudsz funkciókat létrehozni, valamint választ küldeni a szerver részéről a csatlakozó feleknek.

A kliens oldalon a "kötelező" dolog jóval rövidebb - be kell szúrni egy szkriptet a <body> után, lehetőleg minél közelebb:
<script src="/socket.io/socket.io.js"></script>
Ezen kívül a szkript elejére valahova, (ahol kezded) kelleni fog egy rövidke
window.socket = io();
sor, innentől pedig eléred a 'socket' paranccsal annak funkcióit. Példa az adat küldésére és fogadására:
socket.emit('test', 1);
// a küldött adat lehet szám, tömb, objektum, stb

socket.on('receive', function(data) {
  /* és itt tevékenykedhetsz,
     mi történjen a kapott data-val */
});
Röviden ennyi lenne, innentől a fantáziádra van bízva, mit hozol ki belőle.

Ide kattintva egy Google Drive mappa jön be, ahonnan letölthetitek a sablont a kezdéshez (azzal a pár sorral), meg a videó végén lévő kész kódot is, kipróbálhatjátok.

Sok sikert, jó próbálkozást, alkotást!

// Előző "fejezet"

Node.js, Socket.IO - 1# telepítés 2017. december 28., csütörtök - 2:33


Már ugyan volt valami alap Node.js leírás, de az elég egyszerűsített volt, ez meg végül lehet - majd - egy sorozat lesz, talán videóval (is).

Röviden - mi(k) ez(ek), mire jó?


A Node.js lényegében lehetőséget nyit szerver létrehozására, amit JavaScript nyelven írhatunk meg. Ez a szerver alapvetően olyan, hogy programokkal tudsz az új szervered nyitott portjára csatlakozni TCP/IP használatával, pl. a parancssorban - illetve én a teszteléskor telnettel csatlakoztam az így készült szerverre.
Azonban a Node.js kiegészíthető az 'express' nevű keretrendszerrel, ami webes elérhetőséget biztosít. Így már nincs szükség a parancssorra, készíthetünk webes játékot is. De valami még hiányzik.
A játékokhoz (is) általánosan használt socketek, hogy tudjunk menő szerver-kliens kapcsolatot kiépíteni, rendes csomagküldéssel-fogadással. Ehhez kell a Socket.IO. /* Más szavakkal, (akár) csinálhatsz HTML5 alapon MMORPG-t. */

Telepítésük

  1. a Node.js hivatalos oldaláról töltsd le az utolsó stabil kiadást (LTS), és telepítsd fel (csak next-next, semmi extra)
  2. ha feltelepült a NodeJS, akkor hozz létre a jövőbeni projektjeidnek egy mappát (lehetőleg az elérési útjában ne legyen ékezetes karakter, szóköz - az én ilyen mappám: "C:\Users\EProg\Documents\Projektek\socketio")
  3. hozz létre ebbe a mappába egy "package.json" nevű fájlt, majd nyisd meg, másold bele a következő sablonszöveget:
    {
      "name": "socket-examples",
      "version": "0.0.1",
      "description": "my socket.io apps",
      "dependencies": {}
    }
    (ebbe a fájlba fognak feljegyződni (automatikusan) - a dependencies részhez - a letöltött keretrendszerek)
  4. nyissunk egy parancssort (rendszergazdai jogosultságokkal lehetőleg), és abban lépjünk be ebbe a mappánkba (akár úgy is bele tudsz menni, hogy kimásolod a mappa címsorát, és a parancssorba beírod a cd utasítás után, így: "cd C:\Users\EProg\Documents\Projektek\socketio") – majd írjuk be ezt a rövid parancsot, ha a mappánkban vagyunk:
    npm install --save express@4.15.2
    ha sikerült, valahogy így nézhetett ki a parancs után a konzolod:

  5. még mindig ugyanabban a mappában maradva, ezt a parancsot is kövessük el:
    npm install --save socket.io
    ha sikerült, valahogy így nézhetett ki a parancs után a konzolod:
  6. amennyiben ez kész – akkor kész vagy a telepítéssel, a "package.json" fájlodban látható is a két framework a dependenciesnél (ha sikerült)
A telepítés ennyiből állt volna. Innentől ebbe a mappádba hozz létre újabb mappákat, minden egyes nodejs-socketio projekted számára. A példafájl kódja, ami mindjárt következik - úgy működik, hogy az adott mappában lévő összes fájlt (és további mappát, meg tartalmát) átküldi a böngészőnek (a kliens oldalnak), ha a szerver fut és elérhető – ezért is kell külön mappa minden projektnek.

// A következő "fejezet" egy videó formájában fog készülni - nagyrészt. Benne lesz, hogyan kezdj neki, mik az alapvető lehetőségek, a kész forrás működőképesen letölthető lesz.

Számhordozás 2017. december 22., péntek - 11:50


Már vagy másfél hónapja próbálom nyélbe ütni ezt a számhordozás kezdeményezését. Eddig nem jött össze, mert mindig sok volt a dolog, és nem jutottam odáig, ha épp Füzesgyarmaton voltam.

Ugyanis a közelben Békéscsabán meg Füzesgyarmaton van Telekom üzlet, és ez csak személyesen intézhető el. Nekem meg - mivel - úgyis útba esik Gyarmat, így oda mennék inkább.

Az egyetlen probléma, hogy csak csütörtökönként van nyitva, 9:00-től délután 5-ig (asszem').

Ezért mindig nagy a tömeg.
Amikor először eljutottam odáig, hogy menjek, akkor alig voltak előttem. Páran ki is álltak a sorból, ugyanis egy férfi... parádézott, hogy az ő lányának adná a régi telefonját, ezért neki kéne egy új, Samsung Galaxy S7 vagy S8 / S8 Plus, de hát muszáj volt kikérdeznie szegény Andreát (a T-kom alkalmazott), hogy mi a különbség e között meg aközött.

Nekem csak kb. 40 percem volt, hogy még utána vissza is tudjak menni - ne órák múlva - Szeghalomra. Ez a fickó 30 percet beszélgetett, és a döntésre még csak ezután jutott. Persze még sajna maga az intézkedés is eltartott jó pár percig gondolom (mert hát otthonról nem lehet telefont rendelni, ilyesmiről még nem is hallottam.) Nekem meg el kellett jönnöm..

Most legutóbb jobb volt a helyzet. Kint álltunk az üzlet előtt, bent az előbbi fickó, meg a családja (gondolom). Két hete pocsékolta el az időmet, és most ugyanúgy ő volt bent. Már az előttem lévő anya és fia páros kezdett idegeskedni, de mondtam nekik, hogy nincs gáz, múltkor is 30-40 perc ment el rá.. xD
Mikor kijöttek, má' hálálkodtak az Istennek is.

Így végül én is sorra kerültem. Ideje volt. Így 27-étől remélhetőleg (ha nem lesz gond valamivel) - megtartva a régi 20-as számomat - én is a Telekom szolgáltatóhoz tartozom.


Edit: (2017. 12. 28.)
27-ére volt kb. 13:00-tól 23:00-ig beígérve, hogy a két szolgáltató (Telenor -> Telekom) megbeszélik a szituációt, meg megcsinálják a cserét, ha nincs tartozásom és egyéb szabályokba nem ütközöm.
Így épp 27-én 22:30 körül eszembe jutott, hogy megnézzem a helyzetet. Ja, a *111# nem volt hívható (Telenoros egyenleginfó meg ilyesmi). Szóval gondoltam siker. És igen.
Gyorsan regisztráltam is magam minden létező adattal a Telekom rendszerébe, a telefonszámommal "belépve" a "fiókomba" - ami mondjuk eközben jött létre.
Szóval, végeztem.


Tökfaragó verseny nyeremény 2017. december 19., kedd - 22:15


Ez így poén, ugyanis a tököt nem én faragtam, mert húgom. De én fotóztam le, és küldtem be.

Íígy többet felesleges is mondanom, én nyertem meg a rakamazi turul medált, és egy bónusz medált is (bizonyos okokból kifolyólag), amin egy farkas van. :3

Köszönöm szépen A Fantasy Földje szerkesztőinek, akiknek az oldalát egyébként itt lelitek meg.
(És külön köszi Sitának!)

Itt érhető el a győzelemről szóló bejegyzés, itt pedig amúgy a verseny.
Képek:





Hexaszilikonmetaláz 2017. december 13., szerda - 18:48


Ezt juttatta egy fóbia az eszembe, amit Instán láttam meg. Mert hasonló a kezdődése.

Mint köztudott (khm), ez az az anyag, amiből Mézga Aladár véglegesen elkészült űrhajója (a Guliverkli) áll. Egyébként imádtam Romhányinak ezt a művét - mármint az egész Mézga család sorozatot, de Aladár a kedvencem. Amolyan példakép értékű. Szeretem az ilyesfajta zseniket. És egyébként kicsit a (legidősebb) bátyámra emlékeztet.

Most így hirtelen elgondolkodtam rajta, hogy erről miket írnak, meg hol? Gondoltam a Google majd válaszol. Szóval rákerestem, de csak két találat volt, azok is valami régi fórumról.

Ez motivált, hogy ezt a majdnem értelmetlen, tartalomtalan bejegyzést megírjam.
Egész pontosan két dolog: ha a Google felfigyel rá, hogy ez a bejegyzés címe, így aki véletlen erre keresne (és hozzám hasonló érdeklődési körű), az harmadik találatként majd ezt a blogot is megtalálja. Idővel.
A másik motivációm egy érdekesség leírása, egy újabb véletlené ezzel kapcsolatban.
Az előbb említett fórum téma /ahol ránézésre történetet írnak, és mindenki folytatja 1-1 gondolattal/ elég régi, és pont ez a bizonyos hexaszilikonmetaláz 2006. július 30-án megemlítve, ami poén, mert aznap volt a 9. születésnapom. :D


Találtam már hasonló véletlen dolgot, ami átlagos ember számára nem összefüggő, de nekem igen, mert több olyan témát érint, amiket külön-külön szeretek, vagy érdekelnek. Leírtam anno, idézem magamat:

Úristen, nézelődök neten. Erre semmi esély nem volt:
Felmentem a Végzetúr nevű játék oldalára. Ez az alapja az én játékprojektemnek.
Nézem, Beholder KFT. üzemelteti, de ezeknek sok hasonló játéka van. Kik ezek? Irány a Wikipédia.
Olvasom róluk, tök komoly cég. Mondom az igen. A nevét a cég a Beholderről kapta, ami a Dungeons & Dragons főszörnye.
Jó, rámegyek (a Beholderre az angol wikin) - egyértelműsítő lap jön be.
Nézem, 4. opcióként egy Végtelen határok epizód címe. xD (egy rohadt jó sci-fi sorozat, régen néztem). Rámegyek.
Legörgetek a rész tartalmához. Első pár szó:
"The episode begins as Patrick"

Edit: (2017. 12. 19.)
Nálam a Google keresésbe már látszódik is ez az oldal, meg az oldalam részei. Muhahahaa.. De megnéztem privát fülön egy online proxyn keresztül a Google-t, sajna ott még nem. Félsiker. (Más lehet szintén nem látja, hiába magyar, de talán később.)


Edit2: (2017. 12. 28.)
Most már online proxyn keresztül is látom, pl. Németországból, német nyelvűre váltva a Google-t is. Talán akkor már mindenhol elérhető? Ergo... ~ 15 nap kb., mire bekerül a Google-be egy bejegyzés.

Ismerősök 2017. december 10., vasárnap - 18:13


Gyűlt már nagyon a Facebookon az ismerősök száma. Általános iskola óta gyűlnek a "látásból ismerem" arcok a városból. Másoknál ez több, mert én introvertáltabb vagyok. Gép előtt ülök, csoda, hogy az 528 összegyűlt idáig. Volt egyébként ez 550 is valamikor (fú, ez annyival több, muszáj volt kiemelnem :D ), de időnként törölgettem egyet-egyet.

Tegnap is vagy 10-15 már "törölt" (deaktivált) profiltól szabadultam meg, amikre a Facebook volt kedves azt hinni, hogy nekem még szükségesek.

Meg egyszer egy vita miatt megszabadultam szintén vagy 40 "ismerőstől". Nők..

Igazából elég gáz, de őszintén mennyit ismersz azokból, akik ott vannak a listádon? Melyiket mennyire?
Én már régóta beállítgattam távoli ismerősnek azokat, akiket most töröltem egyébként, így durván 272 embert töröltem le ma. Még talán 10-15 beleférne, de annyira nem lényeg. Így viszont most pontosan 256 ismerősöm van.

Hát, szép szám a 2 ^ 8.

Tényleg elgondolkodtató. Ma írtam egy listát is, a közvetlen családomat kihagyva, hogy kik azok az emberek (és egymás között kb. milyen sorrendben), akik számítanak, érdekesnek tartom őket, vagy megismerném őket jobban.. 32 fős lista (ami szintén szám szám..).

Itt meg egy videó, első nekifutásra 270 ismerősöm lett, a törölteknél ott az a kék gomb. Szép hosszú..


Szerintem ezt a videót így nem lehet lejátszani, mert Google Driveról linkeltem. De ide kattintva 100% lejátszható..

Edit: (2018. 01. 28)
Most csináltam egy viszonylag alapos számolást, bár 1 hiány van, és a Facebook amúgy is 256 ismerős helyett 242-t sorolt ki (két oszlopban 121-et)..

Rokonok, testvérek: 21
(volt) tanárok: 33
(volt) osztálytársak: 51
Mások által megismertek: 50
Mások szülei, rokonai: 25
Metin2-n megismertek: 19
RM2k/GM miatt megismertek: 14
AFF által megismertek: 5
Érdeklődés miatt megismertek: 20
Törölni kéne: 3


edit: (2018. 02. 06.)
Még jó, a végén megkövezne az a 270+ :D //sarcasm