játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5444
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
> 1 <
Katalin - Tag | 5 hsz       Online status #195410   2013.06.25 11:47 GMT+1 óra  
köszi, megnézem

   
syam - Törzstag | 1491 hsz       Online status #195404   2013.06.25 09:17 GMT+1 óra  
Az eltének van egy lua oktató oldala.
Nincs kizárva, h oktatják is
alias aalberik
   
Katalin - Tag | 5 hsz       Online status #195403   2013.06.25 09:12 GMT+1 óra  
Sziasztok!

Hol lehet idehaza LUA scriptet tanulni?

   
Parallax - Tag | 579 hsz       Online status #164847   2011.09.22 09:57 GMT+1 óra  
Pretender: Ehhez már fordítóprogramot kell fejleszteni. Egyszerű esetben nem olyan nehéz, de elég mély a téma. Lexer, parser, interpreter. A suliban majd fogsz róla tanulni és egy egyszerűbb elemzéssel meg is valósítani egy kis nyelvecskét talán az ANTLR közbeiktatásával, ami már a lexer és parser-t meg is oldja helyetted.

Syam: Én olyasmire gondolok, hogy írom a rendszert, persze alapos tervezés után és menet közben integrálgatom a scriptet, tesztelek. Valamennyire időtálló, sőt 1-1 alrendszer nem is nagyon változna később. Csak mivel mindent magamnak írok, nem biztos, hogy megéri és összességében nem biztos, hogy gyorsabb a fejlesztés, ha a teljes játéklogikát scriptelem, mintha C++ ban írnám, de minden kis fingnyi változtatás után fordítás lenne.

Itt ahogy olvastam mindenki oda van a scriptől, meg vissza, akkor is ha saját motort fejleszt.
Szerk.: Jövőre indítok ilyen projectet, ha mást nem majd én számolok be, hogy mennyire éri meg.

Ezt a hozzászólást Parallax módosította (2011.09.22 11:11 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #164846   2011.09.22 09:52 GMT+1 óra  
Én erről nem is tudok sokat... anno úgy oldottam meg a "scriptelést", hogy szövegesen beolvastam a parancsot, meg a paramétereket, és külön-külön lehetett minden egyes parancshoz rendelni egy konvertálós és végrehajtó függvényt.
Pl. volt az a parancsom, hogy
Kód:
player_spawn(0,0,0,5);

Abból beolvastam, hogy command = player_spawn, parameters[] = "0", "0", "0", "5"
Volt egy dictionary-m is, ami megadta, hogy mit kell hívni az adott parancs esetén. Meghívtam azt a két függvényt
Kód:
void A()
{
    x = StringHelper::ToFloat(parameters[0]);
    //...
}
void B()
{
    player->Spawn(x,y,z,angle);
}


Node kizárt, hogy ezt így szokták (így pl. minden egyes parancshoz írni kell két függvényt, változókat eltárolni, stb.), szóval hogy érdemes ilyet írni?

   
syam - Törzstag | 1491 hsz       Online status #164844   2011.09.22 09:43 GMT+1 óra  
Szerintem ez attól függ, h az engine egy vagy több játékra lesz tervezve.
Utóbbi esetben az engine-t gyaklag csak modolja az ember amihez pedig minél nagyobb szabadság kell, amit a script tud (csak) nyújtani az engine átírása nélkül.

Viszont utólag megírni a script bind interface-t az egy halál...
alias aalberik
   
Parallax - Tag | 579 hsz       Online status #164842   2011.09.22 09:38 GMT+1 óra  
Idézet
Parallax :
Idézet
barack1 :
Kész engine-t nem is nehéz scriptelgetni, a finom feladat az, amikor magadnak írsz mindent.


Annak azért már nem sok köze van a scripteléshez.


Akkor talán itt jobb helye van ennek a problémának. Engem érdekelne másoknak mi a tapasztalata. Megéri e a script integrálással való munkát (binding, felület írás) az a gyakorlatilag egyetlen előny, hogy gyorsabb játék logikát írni, vagy engine-t tesztelni? Ez arra az esetre vonatkozik, ha kis csapat van pár fő, vagy csak 1-2 programozó.

   
TPG - Tag | 3402 hsz       Online status #92313   2008.07.12 08:31 GMT+1 óra  
Idézet
dvorgaz :
LuaBind-nál a függvények importálásához/script futtatásához kell ugy egy ilyen:

Kód:
  // Create a new lua state
  lua_State *myLuaState = lua_open();

  // Connect LuaBind to this lua state
  luabind::open(myLuaState);

  // do stuff...

  lua_close(myLuaState);


Ezt minden alkalommal el kell játszani mikor scriptet futtatok, vagy mondjuk a program elején létrehozom ezt a luastate-et meg exportálok c++ függvényeket, aztán majd kilépéskor meghívom a lua_close()-t?


Én utóbbit csinálom, de szerintem létezhet olyan eset mikor az előbbi is hasznos lehet.
Reality is almost always wrong. - House

   
dvorgaz - Törzstag | 575 hsz       Online status #92297   2008.07.12 04:15 GMT+1 óra  
LuaBind-nál a függvények importálásához/script futtatásához kell ugy egy ilyen:

Kód:
  // Create a new lua state
  lua_State *myLuaState = lua_open();

  // Connect LuaBind to this lua state
  luabind::open(myLuaState);

  // do stuff...

  lua_close(myLuaState);


Ezt minden alkalommal el kell játszani mikor scriptet futtatok, vagy mondjuk a program elején létrehozom ezt a luastate-et meg exportálok c++ függvényeket, aztán majd kilépéskor meghívom a lua_close()-t?
   
TPG - Tag | 3402 hsz       Online status #91354   2008.07.03 14:30 GMT+1 óra  
Az ilyesmi policy függő, abban az esetben amit írtál emlékeim szerint a copy az alap policy. A policy-kről itt olvashatsz.
Reality is almost always wrong. - House

   
dvorgaz - Törzstag | 575 hsz       Online status #91348   2008.07.03 13:14 GMT+1 óra  
Hello, bekötöttem egy MyResourceManager nevű (ResourceManager típusú) objektumot Luába LuaBind-dal:

Kód:
// Assign MyResourceManager to a global in lua
luabind::globals(myLuaState)["MyResourceManager"] = &MyResourceManager;


Ilyenkor tényleg cím szerint adja át a scriptnek (tehát nem jönt létre belőle másolat), vagy bemásolja valahova a scriptbe is? Pl. mennyire hatékony, ha nagy mennyiségű adatot szeretnék így átnyomni a scriptnek?
Azt próbálgattam, hogy bekötés után változtatgattam az objektum egy tagváltozóját C++ból és scriptből is, és mindíg "szinkronban" voltak a scriptbeli és kódbeli változók, de nem egyértelmű, hogy ez amiatt van-e, hogy pointerrel lett átadva, vagy azért mert külön szinkronizálja őket.
   
twilek - Tag | 144 hsz       Online status #89975   2008.06.20 10:08 GMT+1 óra  
Ez is szin ... de ugye Red Green Blue Alpha ... nahh de az utolso az alpha? vagy az elso? (kozepre enm szoktak tenni ))
ezert jo ha leirod, mert ezt egybol nem fogod tudni ... amelett van ahol nem RGB-t kernek, hanem BGR-t ... szoval )))
-=[ TwILeK ]=-
http://www.twilek.hu
   
fpeti - Törzstag | 1290 hsz       Online status #89928   2008.06.19 15:48 GMT+1 óra  
Idézet
twilek :
haaat

akkor ez vajon mit jelenthet? lamp0001={1, 1, 1, 0}
? ))



Ez így nem ér, a színnél könnyebb 3 számot beazonosítani! (way túúúúl sarkos a példád)
   
twilek - Tag | 144 hsz       Online status #89927   2008.06.19 15:39 GMT+1 óra  
Pedig en tenyleg javaslom ... de valo igaz, hogy draga. 100$ = 18.000 huf (kb )) ez a dolog bosegesen meger ennyit .. tenyleg nagyon nagyon hasznos ...
ami nagyon jo benne:
alt+shift+g -> feljon egy ablak, ami a projectben talalhato osszes filet tartalmaza, ahogy gepelsz ugy szuri a listat, enterre a fjalhoz ugrik
alt+m -> lenyilik egy ablak, a fajlban levo fuggvenyekkel, gepelsz, szur, enter oda ugrik
alt+g -> valtas header es cpp kozott / ujabb verzioban mar inl -t is kezel

a faj llistahoz hasonloan van fuggveny lista is egesz soulution ben ... refeneciak, hivas listak, minden .. renegeteg nagyon hasznos funkcioja van, amibol mar az elso 3 miatt erdemes )))

szoval nagyon nagyon nagyszeru kis tool .. a code complite rol nem is beszelve ...
beirsz neki .. pl:
for ENTER
for( ITT A KURZOR )
{

}

switchre, exception re .. de te bovitheted alistat ... elkepeszto ..
Nahh de ez nem a reklam helye, bocsi, tobbet nem irok
-=[ TwILeK ]=-
http://www.twilek.hu
   
TPG - Tag | 3402 hsz       Online status #89924   2008.06.19 15:30 GMT+1 óra  
Idézet
fpeti :
Nekem a VS intellisense bőven elég.. de az mondjuk nem ennyire szép színes


Nézd csak végig a feature listát. Én konkrétan lementem hídba mikor megláttam a cuccot egy videón működésközben. Előtte a VC#-ra irigykedtem mert baromi gyorsan és kényelmesen lehetett a fejlesztőkörnyezet miatt dolgozni benne, de az a VA-hoz képest vicc. Ezért nem merem a trialt kipróbálni.
Reality is almost always wrong. - House

   
twilek - Tag | 144 hsz       Online status #89922   2008.06.19 15:23 GMT+1 óra  
haaat

akkor ez vajon mit jelenthet? lamp0001={1, 1, 1, 0}
? ))
-=[ TwILeK ]=-
http://www.twilek.hu
   
twilek - Tag | 144 hsz       Online status #89919   2008.06.19 15:21 GMT+1 óra  
A visual assist sokkal tobb mint az intelisens
nem csak kodot szinez, de fajl megnyitasban is sokat segit .. header / cpp / inl valtasban, fuggvenyhez ugrasban .. a fejlesztest kb 10% al gyorsitja ..

De valo igaz, abszolute fuggoseget okoz!!!! ahol nincs VS ott konkretan mar alig tudok dolgozni ... (((
-=[ TwILeK ]=-
http://www.twilek.hu
   
fpeti - Törzstag | 1290 hsz       Online status #89917   2008.06.19 15:19 GMT+1 óra  
Nekem a VS intellisense bőven elég.. de az mondjuk nem ennyire szép színes
   
TPG - Tag | 3402 hsz       Online status #89914   2008.06.19 14:56 GMT+1 óra  
Idézet
fpeti :
ps:
a "Hasznalj Visual Assistot a C/C++ kodokhoz" azt jelentené, hogy ne notepad-ben írjjam be a VC8-nak a kódot? - húú, ettől nem kell félni, olyan elvetemült azért még nem vagyok

Üdv.


Sztem a Visual Assist alatt ez volt értve. Már évek óta nézegetem de még nem volt rá felesleges 100 dollárom, a trialt meg nem merem letölteni mert könnyen megeshet hogy függőséget okoz és akkor le kellene warezolnom amit meg nem szeretnék.
Reality is almost always wrong. - House

   
fpeti - Törzstag | 1290 hsz       Online status #89912   2008.06.19 14:48 GMT+1 óra  
Deeee neeeem,
a programozó nem gépel fölöslegesen, főleg, ha nem muszáj -szerintem.
Tehát nem azt írtam, hogy nem akarok, vagy nem szeretek, csak "fölöslegesen gépelni" nem szeretek, az egyik alapigazság: a jó programozó lusta - itt megint nem arról van szó, hogy nem csinál semmit, hanem, hogy fölöslegesen nem dolgozik, de nem kell ezt magyaráznom.
Egyébként meg egy színmegadásnál mit is jelenthetne 3 szám, mint rgb? (néha jelenthetne gbr-t is, de ehhez elég izének kell lenni. )
Teljesen egyetértek a szabatos-kódolással, én pl sokat kommentelek a kódban.
Ha belegondolok, hogy pályánként x1000 lámpánál kell begépelni, extra sorokat, elég rossz lesz, azon kívül a fileméret is növeXik.

Nem tudjátok ám (méég), micsoda 'super' kis rendszerem van a' egészre, de leírom, le én:
- van egy pályaszerkesztőcském, nem tud sokat, objektumokat lehet vele pakolgatni, meg lehet írni bármelyiknek scriptet, amit egy kis ablakba lehet beírni, na ott alapból kiesik minden syntax-help, mert az egy sima textbox.
Na itt nem kéne túlgépelni magunkat, valami ilyesmiként kell beírni a Kriptet:
Kód:
name lamp001
@.type = 2; -- bulb
@.dist = 80
@.color={1,1,0}

minden objektumhoz külön scriptrész kapcsolódik, ezek nem egy lua fileban vannak, hanem a pályaleíró binárisban, a többi objektadattal együtt.

Amikor eljő' az engine ideje, akkor fogja a pálya-filet, megkeresi az összes scriptet, és feldolgozza úgy, hogy a @-k helyére behelyettesíti a 'name' paraméretét, és ezt kiírja a tábladefininícióval egy temp .lua fileba (tegnap megtudtam, hogy nem muszáj fileba, a luaL_loadbuffer()-rel is lehet karaktertömbből! - majd)

Ezt szépen átadja a luanak, ami compilálja, az objektumok meg a neveik alapján lekérik a lua-tól az adataikat - esetünkben ez egy point-light fényforrás - és tádám, lő a világosság
- ebből körvonalazódhat a lua-rendszerem, most csinálom éppen a másik felét, nem a legprofibb megoldás fényenként begépelni - de 2100 előtt akarék már egy futtatható exe-t a kisközönség elé présente.. szóval értitek, nem élünk örökké, sietünk, még ha nem is látszik

Szvsz bármilyen birkatürelmű szkriptert kiborítana, ha @.color = {1,1,0} helyett mindíg
lamp001.red = 1
lamp001.green = 1
lamp001.blue = 0
sorokat kéne beírnia... sokkal tovább tart, de amúgy minden igaz, amit leírtál.

ps:
a "Hasznalj Visual Assistot a C/C++ kodokhoz" azt jelentené, hogy ne notepad-ben írjjam be a VC8-nak a kódot? - húú, ettől nem kell félni, olyan elvetemült azért még nem vagyok

Üdv.
   
twilek - Tag | 144 hsz       Online status #89836   2008.06.19 04:51 GMT+1 óra  
Hi

Hat csak jotanacs:
1. ott a luaplusz, ahoz irhatsz sajat wrappert, megkonnyiti az eleted, de a stack kezelese is sokkal egyszerubb ...
2. egy programozo nem gepel feleslegesen .. az elso pelda amit irtal: lamp001.color={1,1,0} egyszeruen nem jo ... a 2. a megoldas, ugyanis 1 honap, 1 ev utan azt sem fogod tudni mi azaz 1,1,0 ...
Torekedj MINDIG arra, hogy a kod atlathato legyen, meg sokkal kesobbi visszaolvasaskor is, ne csak neked, de masnak is. Ezert a jobbik megoldas a :
lamp001.red = 1
lamp001.green = 1
lamp001.blue = 0
igy ranezesre fogod tudni, hogy micsoda .. foleg ha a lamp001 nev helyet inakbb egy normalis nevet adsz neki ...

Hasznalj Visual Assistot a C/C++ kodokhoz (meg amihez meg kell ) a lua hoz valami kiegeszitos editort... es akkor kevesebbet gepelsz, viszont atlathatobb lesz a kod ... (amugyis egy programozo ne mondjon sose olyat, hogy nem szeret gepelni .. epp csa kez a munkaja ))
-=[ TwILeK ]=-
http://www.twilek.hu
   
kiskami - Tag | 265 hsz       Online status #89780   2008.06.19 00:11 GMT+1 óra  
Szerintem ne bonyolítsd az életed, sokkal olvashatóbb is a működő megoldásod.
[Silent Vertigo] { Solarah }
http://www.silentvertigo.hu
   
fpeti - Törzstag | 1290 hsz       Online status #89775   2008.06.18 20:18 GMT+1 óra  
LUA gyakorlati bibim van:
kicsi tábla, benne egy fényforrás pár adata, a 'color' adatainak beolvasásával nem boldogulok, csak, ha van a color tábla elemeinek is neve.
Ilyen a tábla:
Kód:
lamp001 = {};
lamp001.type = 2; -- bulb
lamp001.dist = 80
lamp001.color={1,1,0} -- rgb (0-1 values)


color beolvasó kód:
Kód:
lua_getglobal(L,"lamp001");
lua_pushstring(L,"color");
lua_gettable(L, -2);

ezután kellene kiolvasni a color elemeit, mint egy tömböt, de a
lua_rawgeti(L,-1,1); mindíg nil-t rak a stack-top-ra (a 2 tábla benne van a stackben, ellenőriztem: table,table,nil a stack, miután a rawgeti-t meghívtam.)

ps:
lamp001.color={r=1,g=1,b=0}
ha így írnám menne "r","g","b" elemeket lekérve, de így túl sokat kellene gépelni fölöslegesen
   
kiskami - Tag | 265 hsz       Online status #89319   2008.06.14 00:17 GMT+1 óra  
A szkriptnyelvekről annyit, hogy már a Quake játéklogika részét is quakec-nek nevezett c-re hajazó szkriptnyelvben írták, az UT-nek java formájú, a Wow kliensének a guija paraméterezhető, szkriptelhető luában, a Crysys logikáját is luában írták, nemrég valaki az EVE Online kliens oldali előfordított python kódjára eresztett egy decompilert (pedig a python egy nagyságrenddel lassabb, mint pl. a lua), és aki megnézi, meglátja, hogy ott is gyakorlatilag a teljes kliens oldali játéklogika python-ban van.

Ezek után gondolom nem meglepő, hogy az én véleményem az, hogy ahova nem kell a sebesség vagy magasabb szintű logika kell, oda szkript. Gyorsabb, egyszerűbb a fejlesztés, és újrafordítás nélkül lehet cserélni a "kódot" a játékban (a C++ fordítás baromi lassú) - akár menet közben is (szerver!). A lua szerintem is zseniális, amilyen pici, olyan sokoldalú tud lenni; akár OO is megvalósítható vele (többféleképpen is).
[Silent Vertigo] { Solarah }
http://www.silentvertigo.hu
   
fpeti - Törzstag | 1290 hsz       Online status #89314   2008.06.13 16:15 GMT+1 óra  
Pont én is most lua-zok, én pl csak az eseményekre adott választ adom meg lua-ban, de minden akció cpp-kódban lesz, de, hogy mi, azt a lua dönti el. - nekem a legtöbb bajom mostanában a lua-cpp közötti adatkonzisztencia volt, pl nem akanék egy kapcsoló minden kirajzolásánál lua-t hívni, hogy be vagy ki van-e kapcsolva, mit rajzoljon ki. Persze így mind lua-ban, mint cpp-ben meg kell lennie a kapcsolók állásának plö, erre vigyázni kell. De így csak a spec események váltanak ki lua-futást, az meg viszonylag kevés idő.
- ezzel persze a motor alakíthatósága csökken (nem tehet akármit a szkript, csak váltogathat).

Apropó grafika gpu-t használ: dx9 esetén framenként 2-300 draw 1 gigaherz-nyit vesz le a cpu-ból (50 fps esetén), sajnos a d3d eszi a cpu-t is rendesen..

Ps. kezd megtetszeni a LUA, előtte voltam oly hunczut, hogy írtam saját Kriptnyelvet, hát elég sittes lett , a lua meg olyan, hogy szinte bármit beírhatunk neki, mindent jól le tud fordítani, respect a kitalálója előtt, állati összetett nyelv 'ahhoz képest', sokkal közelebb állhat a syntax egy nem programozó beállítottságú emberhez, mint mondjuk a C.
Még egy érv mellette, talán a közös nevező is lehetne: felgyorsítja a fejlesztést (remélem), az idő meg tudjuk mi az iparban. (pénz gy.k.)
   
twilek - Tag | 144 hsz       Online status #89311   2008.06.13 15:41 GMT+1 óra  
Az utolso mondat: PONTOSAN )) akinek ami tetszik az a szep megoldas ugyis.
A script nyelvek nyujtotta elony vitathatalan. Ha a kodod kivulrol erkezo scriptnyelvek altal vezerelt, akkor az nagyon jo. De azert van am sok minden egy jatekban ami nem a gpu-t zabalja
AI, Game code, Widget system ( widgetbol attam olyat ami megevett egy eros gepet ))
nehez a dontes mit erdemes, en szemelyes velemenyem, hogy nem allnek at full script vezerlesre
-=[ TwILeK ]=-
http://www.twilek.hu
   
TPG - Tag | 3402 hsz       Online status #89309   2008.06.13 15:24 GMT+1 óra  
Idézet
twilek :
Hi

Ide is beledumalok
Szoval. A script nyelvekkel vigyaznek a magam reszerol. Az UT engine is a sajat script jevel dolgozik, viszont, ott is bebizonyosodott, es szerintem mindenhol mashol is igy van, hogy a script nyelvek sokkal lassabbak mint a C++ kod. Ez fix.


Ez tény. Bár a LuaJIT-es Lua már nincs nagyon messze a C# + Mono kombótól sebességben. Az UnrealScript meg még ennél is jóval lassabb. Akkor vajon miért erőlteti Sweeney annyira? Azért mert processzoridő az van bőven, a script meg futhat a rendereléssel párhuzamosan is. A CPU-t úgysem használja semmi más max a fizikai motor de lassan már az is a GPU-ra kerül (lásd a Havok Intel által lelőtt kísérletei vagy a PhysX portolása Cuda-ra). A többi mint hangrendszer és társai meg elhanyagolható mennyiséget esznek. És azok is mehetnek külön szálban. Beépített scriptelési lehetőség kell, sokkal kényelmesebb a DLL forgatásnál. A Source is ilyen DLL alapú és nem véletlen hogy egy halom modder azzal kezdte hogy Lua támogatást épített bele. Pl.: Garry's Mod. De ott van még Lua téren a Far Cry/Crysis duó vagy szélsőséges példának a Psychonauts ami másfélszer annyi Lua kódot tartalmaz mint C++ t. Ahogy észreveszem manapság már nem megy a sebességhajhászás, 60FPS felett úgyis mindegy (sok motor alapból ennyire van limitálva, hiába engedné a hardware akkor sem megy többet), azt az időt meg el lehet pazarolni arra hogy szép, igényes de lassabb rendszert rakjanak össze. De az egész felfogás és hozzáállás kérdése, mindenkinek más a szimpatikus, mindenki tegyen úgy ahogy neki tetszik.
Reality is almost always wrong. - House

   
twilek - Tag | 144 hsz       Online status #89293   2008.06.13 13:37 GMT+1 óra  
Hi

Ide is beledumalok
Szoval. A script nyelvekkel vigyaznek a magam reszerol. Az UT engine is a sajat script jevel dolgozik, viszont, ott is bebizonyosodott, es szerintem mindenhol mashol is igy van, hogy a script nyelvek sokkal lassabbak mint a C++ kod. Ez fix.
Ezert a kritikus pontokon nem teheted meg, hogy script nyelvet hasznalsz, legalabbis olyan scriptet nem, amit nem forditasz le binarissa, esetleg konvertalod forditaskor C++ ra majd binaris ... mert tul lassu. emelett az interpletalt nyelveknek az ahatul utoje, hogy futas kozben dobnak hibat. Ha van egy komoly jatekot, akkor nem lehet olyan hibaja, hogy csak jatek kozben jon elo, mert elirtal valamit a scriptben, esetleg nem jo fajta erteket kapsz meg ...
a script nyelveket inkabb csak kiegeszitonek erdemes hasznalni. Komplett ai-t nem erdemes irni benne, mert ahoz is tul lassu. Jelenleg mar minden morzsta inkabb a 3D megjelenitesre kell aldozni.
amelett egy C++ kod ugyan olyan olvashato, sott, inkabb olvashatobb, mint egy lua kod (habar ez gusztus dolga )), az, hogy dll ben van annyiban konnyiti a dolgot, hogy akar ujra inditas nelkul is lecserelheto, akarcsak egy script fajl. Viszont nagysagrendekkel gyorsabb egy scriptnel.
Szoval en csak javaslom, de a scriptet probaljatok minnel jobban a hatterbe szoritani, mert (egy mai jateknal mar fontos) ugyis rengeteg mindent fog csinalni es az eleg eroforras zabalo .. az osszes tobbi pici cpu idot pedig a 3D megjelenitesre es a game code ra aldozzatok, attol lesz tobb egy jatek
-=[ TwILeK ]=-
http://www.twilek.hu
   
kiskami - Tag | 265 hsz       Online status #89102   2008.06.11 06:42 GMT+1 óra  
(Hozzátenni nem tudok, de dúrva, hogy benne hagytad a flexes emailcímeket.)
[Silent Vertigo] { Solarah }
http://www.silentvertigo.hu
   
Kuz - Törzstag | 4455 hsz       Online status #89099   2008.06.11 06:09 GMT+1 óra  
mind1, megoldottam

Ezt a hozzászólást kuzanth módosította (2008.06.11 07:02 GMT+1 óra, ---)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Omega - Tag | 70 hsz       Online status #88547   2008.06.04 04:13 GMT+1 óra  
Jó volt.

   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #88419   2008.05.31 06:01 GMT+1 óra  
Huhh, ez tényleg hasznos volt
   
dvorgaz - Törzstag | 575 hsz       Online status #88405   2008.05.30 13:31 GMT+1 óra  
Köszönöm a kimerítő választ
   
TPG - Tag | 3402 hsz       Online status #88401   2008.05.30 13:20 GMT+1 óra  
Általában a koncepció minden csapatnál egyedi, hogy két szélsőséget említsek: a CryTek a FarCry és a Crysis esetében is a komplett játékmenetet és a multi-t Lua-ban írta viszont a Valve Source motorja klasszikus értelemben nem scriptelhető, ők mindent C++ ban írnak és DLL-ekben gyűjtenek mert szerintük ez a leggyorsabb (ami igaz is de annyival nem gyorsabb hogy a rugalmasságot fel kelljen áldozni miatta). Én speciel a CryTek filozófiáját érzem közelebb magamhoz. Te magában a motorban legyártod a keretet de ez a keret önmagában nem csinál semmit, a scriptek fogják élettel feltölteni. Nálam jelenleg a kódban öt pont van ahova scripteket lehet beszúrni végrehajtás szempontjából (Init,Reset,Delete,Invalidate,FrameMove), ha a kód valamelyik ponthoz ér akkor szól a scriptrendszernek ami pedig üzen a betöltött főscriptnek. Innen scriptszinten olyan mintha az ember simán progik írna, van egy fő függvény ahol a C++ átadja az irányítást, ez a függvény megkapja hogy éppen melyik ponton adta át a C++ az irányítást (olyan mintha simán üzenetet kapna egy C++ progi). Ez a főfüggvény egyszer van összesen meghívva, akkor mikor legelőször nyúl a C++ hozzá. Ennek meg van az oka, a főfüggvényben van egy végtelen ciklus (mint a Win-es C++ progikban csak azokban kevésbé végtelen az a függvény), és ez a ciklus van minden egyes futás végén megszakítva. Így a vezérlőscript gyakorlatilag úgy működik mint egy egyszerű önálló program. Hogy érthetőbb legyen (C++ példával, a Lua most nem ugrik be):
Kód:
void main()
{
   EntryPointType NextEntryType = Init;
   while(true)
   {
      if(Type == Init) {.....}
      else if(Type == Reset) {.....}
      else if(Type == Delete) {.....}
      else if(Type == Invalidate) {.....}
      else if(Type == FrameMove) {.....}
      NextEntryType = Megszakit();
   }
}

A megszakítás helyén a kód végrehajtása megáll, majd onnan folytatódik. A megszakításon keresztül lehet értékeket beküldeni a scriptbe.

Lényegre térve: a példádat teljesen le lehet kódolni mondjuk Lua-ban, a játékos is egy Lua osztály, a szörny is és a tárgy is. Innentől kezdve a kölcsönhatásaik is a scriptben lesznek leírva. A sebződés, a plusz erő és maga az ütés is az előbb említett scriptbéli osztályok részei. Ezek nem a motor részei hanem mind a játékmeneté. Viszont ezen játékmenetbeli változásokat valahogy jelezni is kell, itt jön képbe az hogy a motor függvényeit lehet hívogatni Lua-ból. Mondjuk a szörnynek véreznie kell mikor megütöd, ehhez utasítod a részecskerendszert hogy adott pontban adott textúrával adott animált részecskéket jelenítsen meg. Az egyik zseniális dolog amit a LuaBind tud hogy megfelelően felkészített C++ osztályokból tudsz olyan Lua osztályokat származtatni amiknek példányait visszaadva a C++ kódnak a Lua kód fog tagfüggvény hívása esetén végrehajtódni. De azt is lehet csinálni amit te írtál, csak olyankor a játékmenetbeli elemeknek a C++ kódban is létezni kell, és nálam a scriptrendszer lényege hogy a játékíráshoz egy átkozott sort sem kell a motoron módosítani (és ez miatt nem is kell újrafordítani ami 20 percnyi idő).

Az AI-nál ugyanez a helyzet, lehet úgy is csinálni ahogy te írod de spec. az nem passzolna az én filozófiámhoz. Az AI-nak csak az általános rész kell hogy motorszinten legyen, ez az általános rész pedig kimerül az útkeresésben, az AI többi része stílusonként és játékonként változik így az is inkább a játékmenet részének tekinthető. Ráadásul az AI nagyrészt a játékmenetbeli történésekre reagál amik szintén a scriptben vannak. Lényegében az AI akkor kerül csak kapcsolatba a motorral mikor lekérdezi hogy az adott célhoz melyik a legrövidebb út és mikor az adott NPC modelljét a játékmenet történéseihez igazítja (beállítja hogy melyik animáció játszódjon le stb.).

Én így csinálom/fogom csinálni, a Lua elég gyors ahhoz hogy nagy mennyiségű kódot lehessen belőle végrehajtani.
Reality is almost always wrong. - House

   
dvorgaz - Törzstag | 575 hsz       Online status #88397   2008.05.30 12:08 GMT+1 óra  
Hello

Mostanában szemezgettem a Lua-val/LuaBind-al, olvasgattam a tutorialokat és tök jó, hogy így scriptből lehet C++ függvényeket meg kódból scripteket meghívni, csak az nem jött át igazán rajta, hogy a gyakorlatban hogy is használják a scripteket a játék állapotának/működésének befolyásolására.
Például van egy varázsgyűrűm, ami ad +5 erőt, meg mindíg ha egy szörny megüt, akkor a szörny is sebződik x hp-t. Ilyenkor nekem kell biztosítanom a script számára megfelelő c++ függvényeket, amik ezeket a változókat (pl erő) manipulálják, vagy a script is meg tudja valahogy közvetlenül változtatni? A szörnyet sebző hatásnál meg pl. valamilyen eventlistenert kéne csinálni (mondjuk ha megüt, akkor dob egy OnHit eventet, ami meghívja a script OnHit függvényét)?
A másik meg az AI gyakorlati megvalósítása lenne. Gondolom ez valahogy úgy megy, hogy minden ellenfélhez rendelve van egy script, amit minden frame-ben meghívnak és eredményül megadja mit is kéne csinálniuk. De ehez át is kéne adni a scriptnek az egész játék állapotát (npc-k helyzete, állapota, navigációhoz waypointok stb). Ezt így hogyan?
   
Orphy - Törzstag | 1893 hsz       Online status #60482   2007.06.20 01:50 GMT+1 óra  
Orphy - Törzstag | 1893 hsz       Online status #58644   2007.06.07 04:57 GMT+1 óra  
Rögtön első kérdésként:

A .NET-es LuaInterface-hez tud valaki valami jó doksit?
Esetleg az AngelScript-hez egy .NET-es interface-t?

   
Orphy - Törzstag | 1893 hsz       Online status #58643   2007.06.07 04:56 GMT+1 óra  
Hello,

körbenéztem, és azt láttam, hogy még nincsen külön topic ilyen célra.

Ez a topic, a különböző script nyelvek gyűjtőhelye lenne:
- AngelScript
- Lua
- Python
stb...

   
> 1 <