2006-12-03

Progresas

He, nezinau, rubtu pirmakart po poros menesiu prisedau rimciau, nei kad paisleisti VC ir isjungti VC... heh...

Progresavimo metu (o padariau nieko daug - tieisog klientas priima keleta reikalingu komandu - sekanti karta prisedes jau rupinsiuos "tik" mapo paisymu), tai va sio smulkaus progreso metu iskilo trys klausimai:

* Seniau man viskas veikdavo 60 fps ribose, na dar berods 72 siekdavo - tai tiesiogiai priklauso nuo moniko daznio (pakeiciu moniko dazni, pasikeicia ir fps kiekis). Bet DABAR - po belekokios pertraukos man nebuna daugiau 50 fps!
* Negana to - isvis kazkas labai ciudno - 50 fpsp pasiekia, kai paisoma konsole, o konsole paisoma paprastai: nupaisoma meniu scena, o tuomet ant jos su visokiais alpha blendinimais uzdedama konsole ir konsoles tekstas...
Kai isjungiu konsoles paisyma - FPS krenta iki ~30! Kazkokis absurdas, kaip gali kristi FPS'ai, kai realaus paisymo kiekis tik sumazeja... Zodz. abra kadabra...
* Kitas momentas apie nenumatytus atvejus: kai serveris uzkraudineja duomenis i klienta, jis pirma issiuncia komanda reikalaujancia isvalyti visus senus duomenis (na del viso svento, taip sakant), o po to dalimis (skirtingomsi zinutemis) susiuncia naujausius duomenis, lyg ir viskas ok. tik mano duomenu klase turi toki kintamaji "is_map_loaded". Kai duomenys isvalomi - aisku sitas biesas numusamas i "false", bet kai tarkim tik po viena zinute mapas (aka zaidimo duomenys, su visa netik mapo info) dalimis susiunciamas - tai ne po vieno bloko uploadinimo nesazininga butu daryt "map_is_loaded = true". Taigi, palikus paprasta uzkrovimo duomenu is failo lytgmeni, akivaizdu, kad "map_is_loaded" praradineja prasme Serverio-Kliento sistemoje... (serverio puseje tai prasmes yra, bet kliento...)
Isvados? (keli variantai)
A. Kliento puseje ignoruoti si nuostabu kintamaji "map_is_loaded"
B. Serveriui siusti ne komanda, kuri vienu ypu isvalytu visus game data kliento puseje, o isvalytu tik po bloka, kuri serveris ruosiasi issiusti. (tokiu atveju - nereitku numusti ir parametro "map_is_loaded")
C. Naudoti papildomaji kintamaji apibudinanti situacija kliente, tarkim "map_is_on_upgrade_task" - butu gal net kazkokia kontrole ar tarkim nenumiro kazkas...

Pamislyjimai apie loginimo komentarus....
* Problema tame, kad kai as ka darau, tai visokius "false" variantus (kai paduodama nepakankamai parametru, kai parametrai ne to tipo ir pan.) - uzloginu, kaip errorus, arba warningus. Kiekvienu atveju aprasau log mesadza... problema - laiko rijimas, tokiu Log->write("ERROR: ") - rasinejimas suvalgo koki 1/5 ar 1/6 "darbo" laiko.
* Tai mastau, o ar nebutu geriau, jei tarkim vietoj erroro teksto, butu kasnros trumpo ir paprasto, pvz.: "ERROR: A458" - galiam net butu erorus numeruoti pagal kokia tai sistema, tarkim paziuret i cpp failo varda ir po to kiekviena error numeriuka didinti vienetu.
* To esme paprasta - errorai butu trumpi, juos butu galima delioti itin paprastu CTRL+C -> CTRL+V budu, tik pakeiciant skaiciuka, kiekvienas erroras unikalus - jei istiesu reik remtis erro mesadzais, tiesiog pasileidi VC, duodi paieska per visus projekto failus ir vuolia - tau randa errora, o tu ziuri, kas cia dedasi...
* Na tai labai drasi ideja, kurios aisku as nesiimciau igyvendinti... (visdelto error mesadzas, eina kaip geras komentaras, o ziurint i loga matyti "AAA8 BBB7 AAA9 BBB4" kazin ar noretusi). Ale sirdis vistiek iesko budu, kaip neprarandant kokybes neprarast ir laiko...

2006-11-10

NULL

NULL - Tai apibudina mano progresa... na nemano, o zaidimo kurimo...

Situacija tokia - pakeiciau darba, ir pastebejimai:
* Kai dirbau NE kompu softo/kodinimo srityje - buvo ikvepimo kurt, bet grizdavau be jegu uzsiimt kodinimu...
* Kai pradejau dirbt sedejimo prie kompo ir visokio crapo (kuris vadinamas sourcu) kodinimo darba - griztu namo nepavarges, energingas ir t.t. bet - neturiu jokio noro kanors kodinti, visiskai nieko. Ne nulis, o tiesiog NULL. Paziuriu anime, pageiminu... man net "idomu" kiek visa tai tesis... Bet pradedu nusivilt savimi :(

2006-10-08

Letai kaip vezlys, arba - nejaugi loginimas turi but toks sudetingas?

Hi,
Kagi antras savaitgalis, kai prisedu prie kodinimo, tai jau sis tas, o ir darbe lyg ir jau turetu sumazet apimciu, tai tureciau lyg ir but moraiskai nepavarges imt kodint (beto ir zaidimai pabodo), ir siaip darbo pradejau(ar tia rpadedu) naujie ieskot - noriu daugiau ir kompo (veikiancio) palei nosi :) ech..
Apie progresa:
* Na visu pirma susitvarkiau kaikuriuos momentus - nzn. kaip kiti, bet kartais, kai jau kazka darai is inercijos - tieisog paimi ir tarkim vietoj keliu funkciju pradedi rasyt viena didele, su daug ifu ir viso kodo vykdymu - tai pasiaukojau ir ifus palikau, o koda sumeciau i kitas funkcijas... - tvarka sourcuose pakelia morale, kas gamedeve taip butina...
* Atitinkamai duomenu (zemelapio) persiuntimo reikalai smarkiai pajudeje i prieki, ir manau vienos darbingesnes dienos klausimas, kada spresiu mapo paisymo reikalus, eventu gaudymo etc - bus zingsnis i prieki, gal net koki screenshota galesiu pasidaryt...

Momentai:
1. Siaubo pasakecia - KODEL LOGINIMAs TURI BUt TOKS SUDETINGAS?! Staiga "pastebejau" kad mano "serveris" turi CData klase (na ten GameData isesmes, gla pavadinimas negeriausias, nors ka zinau... pagyvensim pamatysim), taigi - pastebejau, kad man reikalinga beveik identiska klase "clientui" - atitinkamai talpina tuos pacius duomenis, atitinkamai turi turet duomenu tam tikrus prieziuros elementus, tai vat sumasciau, kad vietoj, to, jog viska daugiau maziau rasyt is naujo (na butu kopy paste su pakeitimais kaikuriais) - tiesiog daryt CData ClientData; - aisku CData klase papildyti papildomom funkcijom (serveris uzsikrauna duomenis is failo, o klientas tik "zinutemis" is serverio). Viskas man kolkas atrodo pakankamai grazu, bet sutikau beda - mano senojoje CData klaseje visa log infoamcija buvo rasoma stiliumi: Log->server_write(); Atitinkamai "loginimo sistema" (kuri tuomet tilpo i viena klase) - irasydavo i skirtinga faila, konsolei palikdavo irasa, kad tarkim vo sitas irasas "serverio" - ir man atitinkamai kita spalva paisydavo, tad jei imciau ir palikciau kaip yra man ClientoData klases (arba tieisog kliento darbo) log irasus rodytu, kaip serverinius, kas jau savaime blogis... Taigi teko isesmes perdaryti visa loginimo sistema, dabar viskas veikai mazdaug taip:
* Yra viena CLog klase - kuri su Init(string log_file_name" + papidlomi kintmaieji (man reik, hehe ;) ) ); sukuria sau log faila. Ir turi dar write(string textas); funkcija (na ir dar kazka duomenu naikinimui). Bei si klase kreipiasi/mato (turi pointeri i) tokia pabaisa, kaip kad "CLogManager"
* CLogManager klase, savo ruoztu sukuria tris Log'us (CLog ServerLog, clientLog, AllLog; ), bei turi savyje old_records talpykla (rame saugoja tma tikra senu log irasu), bei viena public funkcija, kuria naudoja CLog'ai - si funkcija persiuncia visa irasyta teksta (ar jei reik pakoreguota teksta - o pas mane server log automatiskai prie kiekvieno iraso prikabina "(server)" ).
Taigi viskas bendroj kruvoj veikia taip:
* CLogManageris pakuria logus, ir sukonfigina juos.
* Visos kitos klases, kurios naudojasi loginimo paslaugomis mato tik CLog - kas reiskia, kad mano CData ServerData klase gaus pointeri i CLog ServerLog; O CData ClientData logai bus prirakinti (nupointeriuoti) prie CLog ClientLog; T.y. as nuosiol galiu ramiai isnaudot CData kaip univbersalesne klase! (valiuo!, bet koks ?? buvau, kad tai tik dabar padariau :( )
* Kai kasnors daro irasa, tiesiog sako log->write("oi skauda galvele... erroru zemele!"); Savo ruostu log (aska CLog) iraso i faila irasa ir persiuncia LogManageriui.
* LogManageris patikrina is kokio logo atejo irasas, tikrina stiliumi: if (Sender == &ClientLog) (kur Sender tai pointeris i klase, kuri siuncia irasa, t.y. CLog *log) - patikrines pagal tai kieno tai irasas, ji gali apiformitni, kad teisingai guletu senu irasu sarase ir LogKonsole sekmingai su spalvom atvaizduotu visa ciuda... Kartu LogManageris apsirupina, kad visi tokie irasai nukeliautu dar ir i Visu logu klase, kuri savo ruostu talpina visus logus (tiek serverio tiek kliento - su ta salyga, kad kliento kompe serverio modulis aktyvuotas).

Va taip visas mechanizmas kazkokiai smulkmej, o vietoj ko? Vietoj vienos Log klases, kurioje budavo dvi funkcijos write ir server_write... Na bet kaip jau rasiau pries tai - tai priveda prie to, kad klases tampa nepanaudojamos antrusykiu :( Kagi, visa si istorija sugriove mano iliuzija apie paprastas loginimo sistemas :(

2. Viena paprasta ir kazkuri laika labai skausminga problema susijusi su debuginimu ar dar kuomnors (na gerai, as retai kodinu, bet vistiek mano glava neturetu but taip kaip buvo). Esme tokia - kad nuluzdavo man programa (kai ji dar vykdydavo savo klasiu sukurimo/initializavimo metodus) ties vectoriumi na tieisog if (old_records.size() > 0) - eiluteje viskas nuluzdavo, o VC expresas dar mandagiai atidarydavo vector faila ir rodydavo konkreciai kurioje vietoje ivyko tas exceptiono acceso whatever erroras. Nu savsem lygi vieta, kai mastai - ypac, kad tas old_records sukurtas klaseje AAA stiliumi : vector old_records; Kad butu smagiau pati klase AAA yra sukuriama paciame main.cpp CAAA AAA; - kazkokiu kreipimosi exceptionu negali but, gi ne pointeriai, kad reiktu rupintis visokiais new ir pan...
O problemele buvo kitoje vietoje - tiesiog klase BBB, kuri iskviesdavo AAA.kazkoki_metoda (kazkoki - tai ta, kuris naudoja old_records.size() ) - istiesu neturedavo priskirto pointerio i klase AAA.
Tai mane ir baisiausiai glumina, kad nuluzimas (acces volation erroras ar kas tne turetu but) - istiesu turejo eit BBB klase ties eilute:
AAA->do_it("bla bla"); vietoj to, kazkokiu budu programa vistik persoka i klase, i kuria neturetu ir luzta poroje zingsniu i prieki... nesuvokiu, kaip taip galejo but :/ Tai nelogiska! Esu smarkiai pasipiktines pasualine neteisybe! heh :)

Na tai tokie reikaliukai... Siam kartui manau uzteks.

P.s. rasliava rasiau ir su humoru ir rimtai - na kaip visada.

2006-09-09

"Negandu metai"

Na gal ne metai, bet menuo tai tikrai...

Apie progresa:
* Praejo jau trys savaites... progreso nulis, nu kaip ir nulis:
** Parasiau pora eiluciu, siuncianciu mapo/geimo duomenis is servo i clienta, bet neparasiau likusiu poros eiluciu, kurios issifruotu juos, ech...
** Pamasciau apie visa sistema bendru atveju ir supratau, kad darau permazai funkciju (taip jau buna, kai ner laiko/skubi - pradedi rasyt siek tiek netvarkingai...) - na bei keleta smulkiu isvadu, kurios turetu padet veliau (visgi - mintys/idejos yra progreso-tobulejimo dalis).

Negandu menuo... kai pamastau - tai turbut normalus/eilinis megejo geimdeveloperio reiskinys, susidarantis del serijos priezasciu... stai pvz. pas mane:
* Viena savaite arem darbe - jei iseidavai is darbo pries 9'ta jausdavais itin gerai... apie dzevelopinima kalbu but kaipo ir negalejo
* "laimei" - tos savaites gale - vienam parejo stubras (medikai iskart pasiunte i sanatorija), kitas pasitempe ranka, dar vienas paliko darba... - taigi plesytis prasme (t.y. galimybes) dingo - tad antroji savaite buvo lengvesne... bet susidariusi laisva laika isnaudojau animes perziurai (Elfen Lied) ir geiminimui (Titans Quest - diablo stiliaus 3D action-"RPG"), taip jei ne titans Quest buciau nuveikes ka daugiau...
* trecioji savaite buvo svaistoma per geiminga (darbe poreikis plesytis atsoko, nes deadlainas buvo atidetas ir dabar telpam i remus normaliai dirbdami), negana to - mane aplanke kito zaidimo vizija "vos ne php ar flash based Turn-Based comabat "www" geimas - jo esme PvP dvikovos (ir ne tik dvikovos) - publika galetu susikurti savo veikejus - tobulinti ju skilsus (butu tam tikros combat schools ir pan.) - vyktu turnyrai, kur tie veikejai kautusi "arenose" - vos ne sachmatu principu, tik, kad daug visokiu skilsu ir pribumbasu eitu i geimsa... bei stipriai paremtos giemeriu bendravimo glaimybes - stebeti kitu kovas, komentuoti, bazarint ir pan. visokie ladderiai ir t.t." man visad vizualiai susidaro Dragon Ballz vaizdas, nors realiai - tai butu galima lygint ir su Warhameriu40k (board game)... kai tokios vizijos lankosi - sunku ka ir bedaryt... bet nieko ateis ir praeis, as dirbu, prie SS...

Vat nauju viziju aplankymas turbut ryskiai sako - SS ikvepimas numires (neber jokiu spinduliuojanciu SS viziju, visiskai jokiu), tai gana svarbus etapas, nes buvo aplankiusi mintis - "gal glaima mest SS, bandyt nauja ciuda" - tik sios minties net nesvarsciau... vietoj to atsakymas vienas - greiciau baigi su SS, greiciau pradesi su kuom kitu. Kartais tokiais atvejais noretusi kazkokio tymo - tymo svarbi esme - atrama... Na o dabar remies i save, bet nieko naujo. Va taure vyno ir einu kodint...

A taip nusidownlaodinau Ubuntu, reiks ieksot laiko, kada isntlaiuto kanros i ji...

2006-08-15

Savaitinis raportas - blogas oras yra blogas

Kagi, si savaite ypatinga tuom, kad turejo net 4 dienu savaitgali, na gal 3'ju, nes sestadieni dirbau...
Nepaisant to - progresas netoks, kokio noretusi is keliu laisvu dienu, ir to priezastis gana paprasta - 4'rios paros nuolatinio (su menkais protarpiais) lietaus - ryskiai krites ar nekrites oro slegis - atima jei ne kurybinguma, tai bent nora isvis kanors daryt... Taigi prisedau tik pora dienu: sestadieni po darbo ir antradieni, progresas:
* Parasytas map loaderis, pratestuotas ir net veikiantis - taigi jau turiu uzsikroves (i serveri) pirmaja informacija, pagal kuria jau bus galima bandyt paisyt main zemelapi...
* Parasytas kodas, kuris issifruoja client-server sistemos zinutes, ir jau veikia, kolkas komandu kiekis nedidelis, bet serveris ir clientas vienas su kitu susibendrauja - glaim sakyt ivyko pirmieji duomenu mainai.
* Naturaliai ejo serija kodo papildymu patobulinimu lygiagreciose srityse, kur konors "nebuvo" ar "truko" (visdelto server-client dalykas naujas miskas man).

** Vat vienas idomus pastebejimas apie log failus - as siaip laikiau du tokius: serverio ir kliento, konsoleje (o si atveju vienam exe'ke ir serveris ir klientas) - matau tiek vieno tiek kito log irasus (galiu net "pabrowsyti"..) - vat ir mastau - kas bus jei staiga prireiks ziureti i ne konsole o pacius logus - ir dasuto (dar gana anksti ir be skausmingesniu pasekmiu) - kad reikalingas ir trecias failas - apimantis abieju logus - jame irasai rasomi ivykiu eiles nutikimo tvarka ir "jei kas" nera/nebus reikalo bent kurimo metu but atsidariusiam du log failus ir bandyt suprast kas ten dedasi... Kai pagalvoji paprasta - kodel iskart taip nepadariau? ech..

** Kitas momentas liecia objektini programavima - reik kazkokio igudimo, kurio dar neturiu, va kaip koks pusgalvis turiu dvi atskiras klases (ServerSideConnection ir ClientSideConnection) - abi kuruoja bendravima su kazkuom... Realiai galejau tieisog parasyt viena klase "ConnectionSide" (na gerai pavaditn kiek geriau-aiskiau) ir tiesiog naudot du kintamuosius: CConnectionSide ClientSideConnection, ServerSideConnection;
Taip jei ka papildai vienoje kalseje - ramus, kad bus sutvarkyta abiem atvejais... O dabar - ziurek sugalvoji, laikyti "SentItems" - sukuri vienoj, begi i kita - ten vel.. o skirtumu tarp mano klasiu nedaug... na bet jei viskas bus okei (o tai paaiskes per pora savaiciu) - pasiliksiu su tuom ka turiu, nepulsiu tobulint/perrasinet siek tiek kodo (kurt vienos klases) - nors manau, tai reikejo daryt nuo pradziu... bet gyveni ir mokaisi, gyvendamas uzmirsti ir vel mokaisi...

Ateityje (savaites begyje - t.y. kitos saviates pradzioje) ruosiuos pirkt harduka 250 gb - ta progra sukursiu kuklai aprticija skirta linuxui (konkreciai - Ubuntu) - ir gal (jei bus nuotaikso ir viskas daugmaz veiks gerai) - pabandysiu perkompiliuot Regnumo sourcus ant linuxo (ir siaip idomu pamatyt, kiek ciudu yra dirbant su multiplatforminiais dalykaizzz...).

Na o ateities zingsniai SS projekte:
* Atlikt didesnio kiekio duomenu persiuntimo operacija (t.y. is servo nusiusti mapa klientui)
* Klientui pradet paisyt mapa...

2006-08-08

Savaitinis progreso raportas - ner progreso...

Heh... savaite buvo nekokia - gal del virsvalandziu, o gal delto, kad teko dirbt ir dali sestadienio, progresas praktiskai buvo nulinis (berods parasiau 3 eilutes... ). Laimei si antradieni (t.y. siandien) i darba man eit nereikejo, tai pasedejau nuo ryto iki kokios penktos - bjaurus oras, bjauri nuotaika - viskas sukasi is leto ir nenoriai, bet sukasi, dasikapsciau iki mapo laodinimo, ir nebetikiu, kad uzteks jegu pradeti... nors daugiau ka veikt neturiu :(

Sis tas apie geimsus:
* Civ4 Warlords expansionas - crapas, tas pats Civ4 ir tiek, permazai naujoviu idiege, kad turetu garbes leisti kaip nauja expansiona (o dirbo prie jo atseit nuo seno).
* Fallout Tactics: Botherhood of steels - kagi isbandziau si sena zaidima - crap, nei UFO, nei Jagged alliance nesugebejo pavyt, nors turejo tam potencialo (netgi sakyciau sitas gla net atitinka JaggedAlliance2 lygi, o gla net geresnis...).
* Dar viena seniena buvau issikases: Jedi Knight 2: Jedi Outcast ar pan. (tiesiog prisiminiau, kaip smagiai losiau jo pirma dali..) - gal ir nieko butu buves zaidimas, jei buciau loses pries n metu... o dabar - nebent SW (Star Wars) fanatikams sueitu...
* WarPAth - tai tokia leva saudykle, ant UnrealEngine 2.5 - laksto xebra pergreit, aplinka pertamsi ir siaip sh. (isbandziau bo vienam forume, kazkas pagyre grafika - nu geria grafika nera priestvanine).
* ir.. sios savaites gale 2006.08.14 - iseis "Space Empires V" - bus ka isbandyt...

2006-07-30

Progresas && An Evil I must be...

Apie progresa:
* Praeitas savaitgalis bargiai tiko developinimui - sestadieni buvo pas viena grupioka daromas anime perziuros vakaras su alumi, tai sestadienis isnyko lyg niekur nieko...
* ..keista buvo tai, kad pagirios sekamdieni nebuvo itin baisios ir sedausi prie Client-Server (and vice versa) "connectionu" rasymo... - na nieko naujo, akd nauji dalykai sunkus - pradedi kodint - neziani kaip reiktu daryt, kas 10 minuciu supranti, kad kazka netaip sumastes buavi, perrasai/papildai vis po kelias eilutes - tokiais tempais niena nieko nuveikt...
* pirmadieni toliau kodinau connectionu bjaurasti - labai dziaugiausi, akd ant pagiriu buvau pramynes siokia tokia pradzia...
* antradienis dingo pilnai is tvarkarascio - perziurinejau parsinesta anime...
* treciadienis , ketvirtadienis- pirmieji virsvalandziai darbe, keista, bet grizes radau laiko dar pakoditni viena valanda - pradejo sazine smaugt, kad iki kito savaitgalio neivykdysiu penkmecio plano...
* penktadienis - diena isbraukiau is tvarkarascio anksti nuejau miegot - norejau poilsio...
* sestadienis/sekmadienis - kodinimo metas... panasu, kad pasidariau kazkokia mesadzu sistema, plius akivaizdziai iskilo naujo milestono konturai - padaryti normalu keitimasi dideliais duoemnu kiekiais (kad tarkim - nesikistu tas anas geimeris, kai vyskta duomenu kaita ir pan.) - vat siom akimirkom sumasciau, akd esamoj situacijoj jokio mechanizmo nereiks, na bet ziuresim, jau pasirasiau pirmo mini mapo formata...

Pamislyjimas:
* Kodel vietoj to, kad begti i googliu, i gamedev.net ir pan. ciudus - pasiskaitinet kaip zmones daro client-server geimsus, as bandau isradinet dvirati? Ats.: Todel kad man patinka kurti ir yra idomu - ir butent todel "kuriu geimsus" :)

"An evil I must be":
* sitaip pamasciau, kai peles click eventu gaudyma pavedziau winapi daliai, o ne Direct input... dabar kurioziska situacija - peles judesi pas mane priziuri directinputas, o peles klikus - winapi - duetas veikia tieisog perfect, kolkas... :)