dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Skriptēšana un skriptu valodas
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija
View previous topic :: View next topic  

Vai tu izmanto skriptus savās spēlēs?
Es pats taisu visu parasti tādās siituācijās.
17%
 17%  [ 3 ]
Jā, es izmantoju gan.
35%
 35%  [ 6 ]
Es neesmu taisiijis [tik nopietnu] spēli
47%
 47%  [ 8 ]
Total Votes : 17

Author Message
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Wed Dec 17, 2003 5:18 pm    Post subject: Skriptēšana un skriptu valodas

Agri vai vēlu spēles izstrādātājam nākas nonākt situācijā, kad vinjam vajag pateikt dzineejam, kaa lai tas riikojas. Dzineejs dara visu - ziimee objektus, laadee kartes, taisa spellus, tachu ir probleema - nav iisti skaidrs kaa izsaukt shiis darbiibas no nokompileeta dzineeja. Var riikoties dažādi, viens veids, ko es praktizēju ir uztaisīt spēlei savu editoru, uzrakstīt savu skriptu valodu ar savu sintaksi utt.. Shis veids ir lielisks, jo dod taisiitaajam lielu briiviibu gan ierobezhot gan atljaut dazhaadas fiichas sekundaarajam lietotaajam (skripteetaajam), tachu ir arii vairaakas probleemas - biezhi vien shaada editora, skriptu valodas un visu citu nepiecieshamo padariishanu buuveeshana aiznjem sasodiiti daudz laika un tas meedz buut arii sameeraa garlaiciigs un reizeem darbietilpiigs process. Un dazhkaart vajag rezukltaatus gana aatri un bez kjeepaashanaas. Tad izmanto skriptus jau gatavus skriptu interpretaatorus, skriptu valodas utt.. Par to es arī gribēju jautāt.
Es vēlos izmēģināt šo otro paņēmienu un man nav īsti skaidrs tas meghānisms jau pašā koncepcijā. Jā, es zinu, ka nets ir pilns ar dažādām pamācībam, tachu man noderētu arī jūsu - pieredzējušo .lv game-devu pieredze, viedoklis un ieteikumi. Tāted te ir dazhi jautaajumi,kas mani nedod mieru -
    Kas jāmaina/jāiekļauj kodā, lai būtu iespējams izmantot skriptu valodas (tādas kā VBScript, Lua un analoģiskas)

    Kāda skriptu valoda ir (juusupraat) visoptimaalaakaa Delphi videi un ObjectPascal valodai

    Kā īsti notiek skriptu izpilde - pats mehaanisms, dziļākā būtība.

Tie buutu dazhi jautaajumi uz kuriem labpraat sanjemtu atbildes. Ar cienju un ceriibaa uz daudz un dazhaadaam atbildeem.. [blakus parakstiijies]
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
chaosman



Joined: 28 Oct 2003
Posts: 64
Location: Rīga

PostPosted: Wed Dec 17, 2003 10:35 pm    Post subject:

Nu jaa, peec manaam domaam pasham rakstiit skriptu interpretatoru nav praata darbs (briinos par to ka tik daudz speelju tomeer izmanto savas unikaalas progr. valodas)
Shausmiigi kjeepiiga lieta, bez tam uztaisiit to interpretatoru normaalaa liimenii... Question
Taa ka es rekomendeeju lietot kādu paziistamu interpreteejamu valodu.
Domaaju ka nav lielas noziimes kadu tieshi, galvenais lai pasham buutu eerti ar to straadaat.

Ir taada programma SWIG, kura domaata tieshi shaadam meerkjim - skriptu valodas hmm... interfeisoshanai (laikam tas nav latvieshu valodas vaards Wink ) ar engine. Diemzheel taa gjeneree C kodu, bet vari meegjinaat mekleet ko liidziigu prieksh pascal. Vieniigais ierobezhojums (kaut gan arii to var apiet) - engine jaatrodas dll failaa.

Kas tad iisti ir vajadziigs, lai no skriptu valodas vareetu piekljuut pie engine funkcijaam?
Parasti skriptu valodaam ir kaut kāda iespeeja importeet funkcijas no dll faila. Tachu taam jaatbilst noteiktaam prasiibaam (piemeeram skriptu valodaas lietotie datu tipi ir pavisam citi nekā C vai Pascal u.c.)
Ir iespējams no C piekljuut piemeeram Python lietotiem datu tipiem, tachu otraadi gan ne. Moraale ir taada, ka jaaraksta papildus funkcija, kas buus viduu starp C un Python - taa lietos Python datu tipus, bet izsauks tev veelamo engine funkciju. Tas, ko dara SWIG, arii ir shaadu starp-funkciju automaatiska uzgjenereeshana.

piemeeram, ja tev ir C funkcija:

Code:
bool MyCoolFunction(int i)
{
   printf("I am the creator of universe!\n");
   printf("%d", i);
   return true;
}

rezultaataa SWIG uzgjenereetais wrapperis:

Code:
static PyObject *_wrap_MyCoolFunction(PyObject *self, PyObject *args) {
    PyObject *resultobj;
    int arg1 ;
    bool result;
   
    if(!PyArg_ParseTuple(args,(char *)"i:MyCoolFunction",&arg1)) goto fail;
    result = (bool)MyCoolFunction(arg1);
   
    resultobj = PyInt_FromLong((long)result);
    return resultobj;
    fail:
    return NULL;
}


peec manaam domaam diezgan mazsaprotams un nelasaams kods :D

Taa ka manuaali rakstiit shadus wraperus katrai funkcijai buutu diezgan painful pasaakums.

tagad no Python var izsaukt tavu funkciju:

>>> MyCoolFunction(3123)

ceru ka atbilde bija noderīga Smile
Back to top
View user's profile
uuu
Guest





PostPosted: Wed Mar 10, 2004 6:03 pm    Post subject:

kaa vispaar var speeli uztaisiiiit?
Back to top
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Tue Aug 10, 2004 5:51 pm    Post subject:

Es te bish parevideeju vecos topikus. Es esmu taisijis skriptus divaam speeleem. Es to parasti daru ar INI failiem (manupraat taa ir vieglaak).

Simple INI fails:

[Moshkjis]
strength=100
life=50
weapon=gludeklis
PosX=100 ;pozicija x
PosZ=200 ;pozicija z
Azimuth=180 ;lenkjis y (virziens kur dzeks skataas)
utt.

Nu nezinu - ja tev shis jautaajums veel ir aktuaals, tad pameegjini kauko shitaadu.
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 10, 2004 7:31 pm    Post subject:

Ini faili jau sen pagātnē, tagad modē XML :) Tas tā, kas kuram mīļāks.

Ja Delphiem grib piejūgt skriptošanos, tad izdevīgi tur vien lietot pašu Object Pascal: http://www.remobjects.com/page.asp?id={9A30A672-62C8-4131-BA89-EEBBE7E302E6}
(par brīvu)

Par paša savu skritpu izpildi, ja grib advancētā līmenī to lietu ņemt, tad jāpapēta lexx/yacc (pieejams gan paskāla, gan oriģināli C valodām). Tās abas lietas kopā saliktas dod baigo spēku :) Piecos teikumos grūti to izskaidrto, bet ideja apmēram tāda, ka ar lexx tu saraksti BNF (Bekusa-Naura Normālformu) tavai valodai, t.b. kā tajā pierakstās identifier, kā definējas funkcijas, izteiksmes, u.t.t. Un ar yacc tu pasaki, kādu koda gabalu izpildīt, ja parseris sastop konkrēto BNF produkciju. Šādā veidā, piemēram uzbūvēt komandrindas aplikāciju - izteiksmju kalkulatoru (ar savu mainīgo definēšanu, ar pareizām prioritātēm, infiksu vai prefisko pierakstu - nav svarīgi) ir augstākais kādas stundas darbs.
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Mon Aug 16, 2004 3:10 pm    Post subject:

Ka tu to doma XML? Ka var uztaisit skriptus XML? Mosh paradi kadu piemeru.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Aug 16, 2004 3:20 pm    Post subject:

Nē, nevis uztaisīt skriptus ar XML, bet lietot tos ini failu vietā settingu glabāšanai, kā piemērā rādīja elvman.
Back to top
View user's profile Send e-mail
chaosman



Joined: 28 Oct 2003
Posts: 64
Location: Rīga

PostPosted: Mon Aug 16, 2004 6:56 pm    Post subject:

INI failiem it viena liela priekshrociiba saliidzinot ar XML - var nolasiit setingus no faila izmantojot WinAPI.
funkcija GetPrivateProfileString
Code:

DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,        // section name
  LPCTSTR lpKeyName,        // key name
  LPCTSTR lpDefault,        // default string
  LPTSTR lpReturnedString,  // destination buffer
  DWORD nSize,              // size of destination buffer
  LPCTSTR lpFileName        // initialization file name
);


Piemeram funkcija kas parsee ieprieksheejos postos redzamo .ini:

Code:

char str[1000];
GetPrivateProfileString ("Moshkjis", "weapon", "gludeklis", str, 1000, "game.ini");
 


Lai lietotu XML vajadzees biblioteeku, piemeeram TinyXML. Vismaz prieks C++ tas taa ir.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Aug 16, 2004 8:09 pm    Post subject:

Es to zinu. Delphos pat ir ērtas klases priekš šī pasākuma izveidotas. Bet ja bišku iemanās darboties ar XML, tad tas arī vairs nešķiet sarežģīti. Manas domas ir tādas, ka XML ir daudz fleksiblāks un universālāks. Es jums neuzspiežu lietot XML, ja patīk, lietojiet to INI. Vienkāršos gadījumos protams, ka ini būs ērtāks.
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Mon Aug 16, 2004 10:53 pm    Post subject:

Tieshi kaadaa zinjaa XML ir labaaks? Eertaaks? Mini varbuut konkreetus piemeerus - INI paziistu un arii XML +/- esmu skatiijies, vot buutu labi ja ar pirkstu paraadiitu un teiktu tas ir ir aatraak :).
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
ra001
Site Admin
Site Admin


Joined: 20 Jan 2003
Posts: 452
Location: Latvija

PostPosted: Tue Aug 17, 2004 9:32 am    Post subject:

XML var veidot sarezhgjiitas datu struktuuras piemeeram koku. Taapat datu apstraade lieliem failiem vieglaaka, vieglaak glabaat vienveidiigus datus piemeeram, ja vajag glabaat vairakus ierakstus ar liidziigu datu struktuuru, protams to var dariit arii ini failaa, bet tad jaaglabaa atsevishkji ierakstu skaits un pashi ieraksti. Taa ir, ka vienkarshaam lietaam pilniigi pietiek ar ini failiem, bet sarezhgjiitaakaam lietaam ar daudzaam tabulaam un sarezhgjiitu datu struktuuru labaak ir xml, Kamazs, ja atceries Laachausim es arii izmantoju xml.
Kas attiecas uz skripteeshanu, tad mans uzskats ir joprojaam taads, ka veidojot speeli, kas nav sarezhgjiita, kaa parasti tas ir ar pirmajaam 10 speeleem, tad nav jeegas meegjinaat veidot skriptu valodas, bet iztikt tieshi ar inicialiczaacijas failiem (ini, xml, memtable), bet visu paareejo logjiku likt pashaa kodaa. Bet jau geimiem, kura engijini plaanots izmantot veel 10 speelees, var jau pielikt normaalu skript valodu.
Back to top
View user's profile Send e-mail Visit poster's website
Digital-X



Joined: 11 Jan 2004
Posts: 79

PostPosted: Tue Aug 17, 2004 10:01 am    Post subject: xml

xml koks:
<speele>

    <settings>
      <display>
      <w>800</w>
      <h>600</h>
      <at>65</at>
      </display>

      <sound>
      <enabled>true</enabled>
      <music>80</music>
      <efx>90</efx>
      </sound>

    </settings>

    <player>
    <health>100</health>
    <name>Player</name>
    </player>

</speele>

...lai redzeetu kaados gadiijumos ir vieglaak...
Back to top
View user's profile
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Tue Aug 17, 2004 10:34 am    Post subject:

xml baigi ierullee ... Idea
nupataas kaa uzcepu 3dmax export pluginu, kas exportee uz XML speeles liimeni - patieshaam viegli organizeet datus, turklaat ielasiit ir pavisam viegli un nav jaaruupeejas, ka vareetu buut kaadi sintakses gljuki..
Back to top
View user's profile Visit poster's website MSN Messenger
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 17, 2004 11:27 am    Post subject:

Tādiem settingiem, kādus rādīja DIgital-X, tur tiešām vienkāršān lietot INI. Bet XML vairāk lietot Objektveidīgām struktūrām, jo tur vienkārši realizēt agregāciju, 1-n saites (tieši kokveidīgās struktūras dēļ). Ja spēli veidojot īpaši nedomā objektorientēti, tad tur piesaistīt XML nebūs vienkārši. Bet ja spēle tiek veidota tīri objektorientēti, tad XML kā reiz var būt ideāls objektu parametru glabāšanas veids.
Back to top
View user's profile Send e-mail
ra001
Site Admin
Site Admin


Joined: 20 Jan 2003
Posts: 452
Location: Latvija

PostPosted: Tue Aug 17, 2004 12:27 pm    Post subject:

Driizaak shaada struktuura buutu vieglaak realizeejama caur xml, es protams piekriitu, ka arii ini failaa to visu var realizeet

Code:

<spele name="maita">

<seting>
   <sound enabled=false/>
   <fx enabled=true/>
</seting>

<objects>
  <trees>
     <tree name="liepa" strong=10 malka=15/>
     <tree name="ozols" strong=50 malka=25/>
  </trees>
  <weapons>
    <weapon name="pistol" patron=10 strong=5 auto=false>
      <items>
        <laser>true</laser>
        <optic>false</optic>
      </items>
    </weapon>
    <weapon name="automat" patron=100 strong=50 auto=true>
      <items>
        <laser>true</laser>
        <optic>false</optic>
      </items>
     </weapon>
  </weapons>
</objects>

</spele>
Back to top
View user's profile Send e-mail Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group