|
dev.gamez.lv Latvian Game Developers Community
|
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% |
[ 3 ] |
Jā, es izmantoju gan. |
|
35% |
[ 6 ] |
Es neesmu taisiijis [tik nopietnu] spēli |
|
47% |
[ 8 ] |
|
Total Votes : 17 |
|
Author |
Message |
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
chaosman
Joined: 28 Oct 2003 Posts: 64 Location: Rīga
|
Posted: 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...
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 ) 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 |
|
Back to top |
|
|
uuu Guest
|
Posted: Wed Mar 10, 2004 6:03 pm Post subject: |
|
kaa vispaar var speeli uztaisiiiit? |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
chaosman
Joined: 28 Oct 2003 Posts: 64 Location: Rīga
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: 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 |
|
|
Digital-X
Joined: 11 Jan 2004 Posts: 79
|
Posted: 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 |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Tue Aug 17, 2004 10:34 am Post subject: |
|
xml baigi ierullee ...
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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: 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 |
|
|
|
|
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
|