Jump to content

Spēles veidošana ar SQL


dobbleextra

Recommended Posts

dobbleextra

Sveiki!

Esmu iesācējs. Es veidoju karātavu spēli ar c#, tā gan ir pavisam vienkārša, bet galvenais spēlē būs daudzspēlētāju režīms. Spēles vienspēlētāja daļa jau ir pabeigta, taču daudzspēlētāju daļu es vēl veidošu. Tomēr man nav ne jausmas kā izveidot SQL daļu. Man gan ir pamatzināšanas SQL(māku dažādas komandas u.tml.) tomēr nezinu kā vislabāk sakārtot datus un pārvietot informāciju. Es biju domājis tā, ka es varētu izveidot tabulu priekš visiem lietotājiem kuri meklē maču(viņiem nebūtu nick un nebūtu jāreģistrējas, bet viņiem tiktu piešķirts id). Tad izveidotu tabulu priekš mačiem, kur viens row būtu mačš, kurš saturētu abu spēlētāju id un katra progresu(piemēram, ā_b__s), kuru redzētu  otrs spēlētājs,pirms gājiena padošanas otram tiktu pārbaudīts vai vārds ir gatavs un, ja jā tad iepriekšējais spēlētājs ir uzvarējis un mačā pie uzvarētāja parādītos viņa id pē, kura programma pateiktu,ka viņš ir uzvarējis. Tomēr es nezinu kā to vislabāk pārsūtīt uz otra spēlētāja logu un vispār precīzāk glabārt datus, turkl;at man viisdrīzāk sanāktu programma, kas darbokas ļoti lēni, ar daudz lieka koda, un kas vispār 85% gadījumos izmet exception. Takā nolēmu paprasīt šeit forumā! Ā, un es zinu, ka karātavas parasti nespēlē divatā pa gājieniem, bet tā tikai tāda ideja, lai es varētu labāk apgūt SQL!

Link to post
Share on other sites
dobbleextra

Labi, bet ko tad vajag? Vai ir arī citas iespējas šādos? Es jau arī no paša sākuma domāju, ka tā sistēma nav īsti ērta.

Link to post
Share on other sites

Vajag uzkodēt kautkādu serveri,   uz kuru sūta pieprasījumus visi spēlētāji.

Kautvai HTTP.   Datus pietiek uzturēt iekš RAM.


JSON,  EDN utml.  formāti   ir  daudz labāki  par  XML.

 

PS  es šādu spēli uzkodētu erlangā,  tur jau ir iebūvēta ziņojumu sūtīšana pa tīklu

Edited by MarisO
Link to post
Share on other sites

Brr. Tik daudz gudru ieteikumu, ka pat nevar saprast, uz kuru pusi lai dodas.

 

Enīvei, par daudzspēlētāju režīmu. Kā Tu to konceptuāli plāno realizēt? Vai lietotāji spēlēs browserī, vai arī tiem būs kaut kādas desktop appas, kuras tie palaidīs? Ja desktop appas, tad vai būs centrāls serveris, kuram visi spēlētāji slēgsies klāt, vai arī katrā spēlē viens no spēlētājiem būs serveris, otrs klients? Vai arī vispār divi spēlētāji pie viena datora?

 

Izejot no tā domāsim tālāk, kādas tehnoloģijas pielietot.

 

Piekrītu, ka SQL un DB šeit sanāk mazliet neveikli pielietot, taču var arī tā. It sevišķi, ja izvēlas browsera scenāriju, tad tas strādātu tīri eleganti.

Edited by Vilx-
Link to post
Share on other sites
Inspektors Caps

 

 

formāti   ir  daudz labāki  par  XML

Zini, kas ir ironiskākais... Ka gadus 10 atpakaļ visādi Tev līdzīgie, kompānijas, kursi un augstskolas masveidā ķērca, ka XML esot vislabākais un jāiebāž pilnīgi visur. Pat datu bāzes taču plānprātīgie izveidoja tajā!

 

Tagad pēc 10 gadiem webisti un citi idioti beidzot ir izgudrojuši velosipēdu un nonākuši līdz JSON, kas efektivitātē ir tā paša vecā labā INI formāta līmenī, tikai INI ir vēl vienkāršāks. Kas zin, varbūt nākošajos 10 gados hipsteriem izdosies izgudrot arī riteni - binārus formātus!

 

Tas, ka .NET natīvi atbalsta XML, bet neatbalsta INI un to pašu JSON, ir tikai kārtējais no daudzajiem .NET murgiem. Kaut kādiem vienkāršiem datiem iespējams pat prātīgāk ir tos saglabāt failā pa taisno jeb bināri, kas ir gan vienkāršāk, gan iesācējam vismaz iemācītu darboties ar failiem.

 

 

 

Ā, un es zinu, ka karātavas parasti nespēlē divatā pa gājieniem, bet tā tikai tāda ideja, lai es varētu labāk apgūt SQL!

Tādam mērķim šāda spēle ir slikta izvēle. Daudz labāka ir, piemēram, kontaktu menedžeris ar dažādiem laukiem, filtrēšanām utt. Vai sava auto daļu, remontu, izmaksu, adrešu u.c. lietu datu bāze. Dažādas "datu bāžu" idejas var izdomāt vēl un vēl. Un DB sistēmu vajag izmantot Access, lai nav jāinstalē papildus servisi dēļ mazas štrunta programmeles.

Link to post
Share on other sites

Cik noprotams,  autors domā izmantot datubāzi par centrālo serveri.

Memcached būtu pašā laikā.

Link to post
Share on other sites
dobbleextra

Paldies, par ieteikumiem! 

Nedaudz pameklēju google visus tos jūsu piedāvātās iespējas, bet tiešām tik daudz ieteikumu, es nesprotu, ko tieši lietot. Vai nevarat , lūdzu, paskaidrot, kāpēc tieši to man jāizmanto, jo es pats īsti nesaprotu kādas tieši ir priekšrocības noteiktajā gadījumā un galu galā, kuru man īsti lieot?

 

 

JSON,  EDN utml.  formāti   ir  daudz labāki  par  XML.

Es saproutu, ka XML var glabāt tabulā, bet tos pārējos īsti neesmu pamanījis kā datu veidus manā MSSQL 2013 un ar tie arī neesmu sakāries. Tomēr kā saprotu te vairs neiet runa par SQL, bet kur tad man to īsti glabāt, RAM? Kā?

 

 

Enīvei, par daudzspēlētāju režīmu. Kā Tu to konceptuāli plāno realizēt? Vai lietotāji spēlēs browserī, vai arī tiem būs kaut kādas desktop appas, kuras tie palaidīs? Ja desktop appas, tad vai būs centrāls serveris, kuram visi spēlētāji slēgsies klāt, vai arī katrā spēlē viens no spēlētājiem būs serveris, otrs klients? Vai arī vispār divi spēlētāji pie viena datora?

Lietotāji spēlēs uz desktop app,windows forms applikācijas(.NET), mana ideja ir tāda, ka spēlētāji ieies tādā kā gaidīšanas logā un, kad ienāk vel kāds spēle viņiem automātiski sākas, bet vēlāk var arī ar hostēšanu uztaisīt, un vēlāk es varu arī čatu pielikt.

 

 

Tādam mērķim šāda spēle ir slikta izvēle. Daudz labāka ir, piemēram, kontaktu menedžeris ar dažādiem laukiem, filtrēšanām utt. Vai sava auto daļu, remontu, izmaksu, adrešu u.c. lietu datu bāze. Dažādas "datu bāžu" idejas var izdomāt vēl un vēl. Un DB sistēmu vajag izmantot Access, lai nav jāinstalē papildus servisi dēļ mazas štrunta programmeles.

Apmēram tādas lietas esmu jau taisījis gan qt(c++), gan .NET(c#),bet nu vēlos pāriet nākamajā līmenī, nevis tikai reģistrēšanās formas un tamlīdzīgas lietas taisīt, ja SQL neder tas nekas, tieši SQL pat nav īsti galvenais mērķis, galvenais mērķis ir vispār pieredzes iegūšana C#! :)

Link to post
Share on other sites
Inspektors Caps
vēlos pāriet nākamajā līmenī, nevis tikai reģistrēšanās formas un tamlīdzīgas lietas taisīt

Piemēram, normālam "auto remontu menedžerim" jau pirmajā brīdī varu iedomāties n-tās tabulas - veicamo darbu, darbu veicēju, rezerves daļu, tirgotāju. Tam visam uztaisīt normālu attēlošanu, filtrēšanu, meklēšanu, dažādu izdruku drukāšanu un eksportēšanu. Datu bāzes "lieko" ierakstu tīrīšanu, kad tiem vairs nav references citās tabulās. Tā nav nekāda "reģistrēšanās forma" un tur ir ko darīt. Un variantu, ko taisīt, ir daudz. Kā jau teicu, piemēram, advancēts kontaktu menedžeris. Vēl labs variants ir MP3 ierakstu datu bāze. Uztaisi datu bāzi, kas rekursīvi skrien cauri norādītajiem folderiem, saglabā visus MP3 un ielasa to ID3v1 tagus, kurus nolasīt ir triviāli. Atkārtotā skenēšanā jānosaka vai fails ir izmainīts, vai nē un attiecīgi to vai nu ielasa no jauna, vai DB nemaina. Kad vienkāršajā variantā ar vienu tabulu to esi apguvis, tad taisi tā, ka artist un album tiek glabāti atsevišķā tabulā, lai bezjēdzīgi nedublētos teksti. Un tas pats - tam visam realizē filtrēšanas, meklēšanas, izdrukas u.c. Šim vēl var uztaisīt, lai no Tavas programmas failus uzreiz var palaist sistēmas defaultajā atskaņotājā vai pievienot tā atskaņošanas sarakstam (playlist).

 

bet vēlāk var arī ar hostēšanu uztaisīt, un vēlāk es varu arī čatu pielikt

Ja vēlies apgūt tīklus, tieši atsevišķs čata serveris un klients ir ļoti labi mācību projekti. Plus arī neatsverams gandarījums par to, ka var ar draugiem pačatot ar paša izstrādātu programmu!

 

bināra faila mīnuss ir tā nelasāmība/nerediģējamība jebkurā teksta redaktorā

Tu runā par lietošanu vai izstrādi? Ja par lietošanu, tad vai XLSX failus, kas ir XML iekš ZIP, Tu skaties un rediģē ar Notepad? Zini, normālie cilvēki tam izmanto Excel programmu. Kā tieši Excel programmu ir vieglāk lietot ar XLSX, ja salīdzina ar binārā XLS lietošanu? Ja runā par izstrādi, tad jā - teksta editora vietā būs jāpaņem hex editors, kas datus blakus rāda arī teksta formā, piemēram HxD. Pasaules gals klāt!

 

Iedomājieties mācību projektu, kur failā tiek glabāta viena "tabula", kas sastāv no "rindām" - viena tipa struktūras blokiem. Principā fails ir struktūru masīvs. Raķešu zinātne! Tas jau nekas, ka reālais kods, lai to realizētu, ir pat mazāks par kaut kādas "human readable" šņagas izmantošanu. Un pats trakākais - tas liks izprast datu glabāšanu un darbošanos ar failiem. Mācību projektā to nekādā gadījumā nedrīkst pieļaut, jo savādāk cilvēks var sākt kaut ko sajēgt!

 

Vilx-, nevertell un citiem mietpilsoņiem - tas, ka Jums nepielec, nenozīmē, ka tā ir žults vai nepilns rublis. Tas ir Jūsu burgeru rijēju viedoklis. Ja Jūs apmierina visu mūžu stampāt māgā burgerus, tā ir Jūsu problēma, bet Jūsu aprobežotais viedoklis nav vienīgais, kam ir tiesības pastāvēt! Es esmu izvēlējies "ēdiena" sastāvdaļas rūpīgi izmeklēt un pagatavot ar rokām. Jā - tas paņem vairāk laika. Un jā - ir jālieto smadzenes. Bet rezultāts ir pavisam citā līmenī! Pie tam TIK tālu citā līmenī, ka, liekas, Jums to ir problēmas pat vienkārši aptvert...

Edited by Inspektors Caps
Link to post
Share on other sites
Mezavecis

Tas nozīmē, ka ritenis jāizgudro katru dienu? Man kā mietpilsonim nav saprotams, kāpēc jāiznieko laiks sev un citiem. Nez kāpēc vienmēr aizmirsti piebilst, ka tam bināram formātam jāpieraksta klāt arī specifikācija, lai kāds to spētu nolasīt. Apsveicu, ja esi iemācījies ar HEX redaktoru lasīt un rediģēt excel failus (arī XLS). Bet jēga kāda? Kur tur progress?

 

Ja Jūs apmierina visu mūžu stampāt māgā burgerus, tā ir Jūsu problēma, bet Jūsu aprobežotais viedoklis nav vienīgais, kam ir tiesības pastāvēt! Es esmu izvēlējies "ēdiena" sastāvdaļas rūpīgi izmeklēt un pagatavot ar rokām. Jā - tas paņem vairāk laika. Un jā - ir jālieto smadzenes. Bet rezultāts ir pavisam citā līmenī! Pie tam TIK tālu citā līmenī, ka, liekas, Jums to ir problēmas pat vienkārši aptvert..
Link to post
Share on other sites
dobbleextra

 

 

Piemēram, normālam "auto remontu menedžerim" jau pirmajā brīdī varu iedomāties n-tās tabulas

Jā, labi  pārliecināji, piekrītu būs jāuztaisa arī,kas tāds,bet visu reizē jau nevar.

 

 

Tad uzraksti serveri iekš C#.    Ir daudz piemēru kā to izdarīt,  piem.

Ok, paldies, šito apskatīšos!

Link to post
Share on other sites

Inspektor, es ļoti labi saprotu, ko Tu saki, un šo (jā, reliģijas) kariņu esmu apdiskutējis jau 100 reizes. Ja vēlies par to vēl parunāt, uztaisi jaunu tēmu, varam vēl paspamot. Man nav žēl. Taču ne šajā topikā, OK? Te tas ir pilnīgi garām, un jaunajam censonim, kurš vēl tikai pamatus mācās, šādi smalkumi tikai lieki sajauks galvu.

Link to post
Share on other sites
dobbleextra

Paldies, camel, bet kodu gan es nevēlos norakstīt, labāk pats uzrakstīšu, pat ja sanāks nedaudz šķībs kods. Bet, protams kā piemēru apskatīšos, lai nesanāktu tas "nedaudz šķībais kods", kurš, protams, pirmajā reizē tāds visdrīzāk sanāks, bet vismaz, lai varu to nedaudz "iztaisnot".

Edited by dobbleextra
Link to post
Share on other sites

Lietotāji spēlēs uz desktop app,windows forms applikācijas(.NET), mana ideja ir tāda, ka spēlētāji ieies tādā kā gaidīšanas logā un, kad ienāk vel kāds spēle viņiem automātiski sākas, bet vēlāk var arī ar hostēšanu uztaisīt, un vēlāk es varu arī čatu pielikt.

Nu, tad Tev ir 3 iespējas:
  • Izmantojam SQL serveri kā centrālo serveri. Visas windows aplikācijiņas slēdzas pie tā. Priekšrocība - ļoti vienkārši uzkodēt. Trūkumi - treniņprojektā īsti nekādi. Reālā projektā būtu jāpadomā par performanci un drošību.
  • Uztaisam atsevišķu servera aplikāciju, un klienta aplikācijas. Priekšrocības - klienti var uzreiz sākt spēlēt, nekas nav jākonfigurē. Palaid un ir. Trūkums - programmēt soketus ir mazliet viltīgi, būs jāpiešaujas, lai būtu laba veiktspēja. Toties izglītojoši. Un arī - klienti varēs spēlēt tikai tikmēr, kamēr serveris strādā.
  • Visas windows aplikācijiņas var būt gan kā serveri, gan kā klienti. Iespējams pat, ka serveri katrs uztur tikai vienu maču (pats pret pretinieku). Priekšrocības - decentralizēti. Trūkumi - tas pats kas (2) variantā, plus klientiem vajadzēs zināt draugu adreses, lai sāktu spēli. Vai arī tad jātaisa kaut kādu draugu atrašana lokālajā tīklā, kas vēl vairāk sarežģī lietas. Vai atkal jāatgriežas pie centrālā servera.
Ko vēlētos izmēģināt? :)
Link to post
Share on other sites
Inspektors Caps

 

 

Tas nozīmē, ka ritenis jāizgudro katru dienu?

Viņam neliek to izgudrot, bet gan apgūt! Ja nezin kā strādā ritenis, tad normālu velosipēdu neuzkonstruēs nekad. Tas ir kā reizrēķins - to nesaprotot, kvadrātvienādojumu atrisināt nav iespējams. Es autoram dodu padomus kā iemācīties reizināt uz pirkstiem, skaitīkļiem un rūtiņu lapas, bet Jūs pilnīgam nezinātājam uzreiz mācāt tikai spaidīt kalkulatora pogas. Pedagoģiski tas ir pilnīgs absurds!

 

 

 

Man kā mietpilsonim nav saprotams, kāpēc jāiznieko laiks sev un citiem. ... Bet jēga kāda? Kur tur progress?

Jēga ir kaut ko iemācīties un saprast, bet progress ir izpratnes un zināšanu pieaugumā, kas šeit ir mērķis! Bet, nu, Tu mums protams esi visa mietpilsoņu bara virsleitnants. Ja pārējie vēl saprata, ka tēmas autoram šis ir MĀCĪBU projekts, tad Tu pat to nespēj saprast un runā par kaut kādiem "citiem", kuri lasīs datus. Tad vēl vecum vecais ar nolūku izkropļotais arguments par formāta dokumentācijas nepieciešamību, ko Tu piemini tikai pie bināriem formātiem, bet vienmēr noklusē, ka pie reālas datu apmaiņas ar ārpasauli, dokumentāciju vajag JEBKURAM formātam, tai skaitā XML, JSON un citiem. Bez dokumentācijas, kas apraksta, kas ir kas, datus korekti interpretēt nav iespējams! Un vēlreiz atgādinu - MĀCĪBU projekts! Viņam ir jāiemācās ar read/write/seek darboties failā, nevis jāapmainās ar reālu banku reālu miljonu pārskaitījumiem.

 

Man, savukārt, nav saprotams kādēļ čalītis, kurš iznācis no McDonald's ar burgeru rokā, spriedelē par to, cik blakus restorānā pavāri, gatavojot, un apmeklētāji, gaidot pasūtījumu, nelietderīgi "iznieko" laiku. Un, kas ir tiešām riebīgi - ne tikai spriedelē, bet arī visu laiku mēģina varmācīgi savu praktiskā gremotāja "viedo" filozofiju uzspiest pilnīgi visiem.

 

 

 

Taču ne šajā topikā, OK? Te tas ir pilnīgi garām, un jaunajam censonim, kurš vēl tikai pamatus mācās, šādi smalkumi tikai lieki sajauks galvu.

Abos iepriekšējos postos es autoram arī uzrakstīju vairākus konkrētus piemērus ko un kā taisīt un apgūt. Pie tam, nevis kaut kādus mistiskos smalkumus, bet vienkāršas pamata lietas, ko, starpcitu, līdzīgi, tikai ar mazākiem praktisko darbu piemēriem, māca arī augstskolās. Tā kā vai nu izlasi visu, vai beidz man siet bumbas, kuru nav.

 

P.S. Šajā postā tiešām par tiešo tēmu ir maz, jo kārtējo reizi "jātaisnojas" burgeru stampātājiem...

Link to post
Share on other sites
dobbleextra

Pagaidām izdomāju, ka šo projektu iesaldēšu, jo tiešām labāk jāapgūst riteņa uzbūve pirms to taisu! Pagaidām sāku taisīt to auto sistēmu ko Caps ieteica, tas iet diezgan gludi,pēctam pamēģināšu čatu. Bet paldies visiem kas atsaucās!

 

Pagaidām atbildi neatzīmēšu lai visi nesāk strīdēties kurš labāk, vairāk ieteica Caps vai Vilx.

Edited by dobbleextra
Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...