Pages

Monday, December 5, 2011

Zvjezdojedac, space combat

Izgleda da će implementacija space  combata ići puno sporije nego što sam mislio. Prvo zato što izrada dokumentcije traje, drugo, mislim napraviti promjene na GUIu za dizajniranje brodova i treće zato što je real life posao uvatio maha.

Dokumentacije sam se uhvatio zato što  na mali milijun mjesta imam napisane ideje za space combat koje nisu 100% konzistantne i potpune. Za sada imam 4 strane i materijala za još dvije. Ne zvuči puno ali za svaki odlomak sam morao pet puta razmisliti da li dobro opisuje ono što želim, kako se to slaže s ostalim idejama i da li bi taj odlomak trebalo premjestiti na neko drugo mjesto u dokumentu. Dokumentaciju bih trebao dovršiti ovaj tjedan.

GUI za dizajniranje brodova trebam kompletno pretumbat. Možda čak napraviti ispočetka. Pod broj jedan zato što se bussines logika promjenila. Pod broj dva i tri zato što bih napravio kao odvojen prozor, ne kao tab i zato što promjenio izgled same forme.

Neću ni procjenjivat kad će space combat bit gotov. Bio bi sretan da ove godine :). S druge strane, kad imam viška vremena a nisam pri kompu, pišem si ideje za tehnologije. Za sada imam 30-ak tehnologija i inspiracije za još upola tolko. Poućen iskustvom s Char lovca i Zlih poligona, smišljanje sadržaja igre ne treba čekati kraj programerskog posla jer se jednostavno izgubi zanos. Isto tako, treba razmišljati o brojkama u smislu ako je na početku izdržljivost oklopa x, pred kraj normalne partije na srednje velikoj mapi bi trebala biti 5x. A sad nazad na dokumentaciju...

Thursday, November 24, 2011

Passwordi

Nedavno sam guglajuči jedan pojam, naletio na drugi koji mi je odvukao pažnju, znate kako to biva. U jednom trenutku sam naletio na članak na Coding Horroru u kojem autor tvrdi da je sigurnost u internetu jako slaba tj. da passwordi koje većina ljudi ima su "preslabi".

Ono što mnogi članci koji se bave tom temom iznose (i s čime i ja slažem) je činjenica da su korisnici web usluga tako reći trenirani da smišljaju komplicirane šifre (kombinacija brojeva, velikih i malih slova i specijalnih znakova). Zbog naglaska na složenost, kako bi ih lakše pamtili, ljudi obično smišljaju kratke passworde. Tipa 6 do 8 znakova. Na siteu InfoWorld.com sam čitao članak u kojem čovjek koji se navodno bavi probijanjem passworda (u svrhu ispitivanja sigurnosti, ne zato da krade podatke) tvrdi da se šifre kraće od 10 znakova probijaju bez problema. E sad, da li to znači da ih se probije u roku deset sekundi ili u roku sat vremena, ne znam al sam uvjeren da je u pitanju manje od 24 sata.

Nazad na problem. Postoji problem s "algoritmom" po kojem obični smrtnici smišljaju šifre. Kuharica ide ovako:
1. uzmi nasumičnu riječ, npr. klokan
2. zamjeni slova s brojkama (klokan -> k10k4n)
3. pretvori nekoliko malih slova u velika (k10k4n -> k10K4n)
4. ako šifra nije dovoljno dugačka, dodaj nešto jednostavno na kraj (k10K4n -> k10K4n5)

Problem je u tome što je recept dobro poznat. Svako ko na ovaj način smišlja šifre misli da je pametan i da mu je šifra neprobojna dok napadači s druge strane znaju da puno ljudi ima upravo takav tok misli. Mane kod smišljanja kompleksnih šifri postaju izraženije kada isti korisnik mora pamtiti više takvih šifri. Čovjek prirodno želi sebi olakšati posao a to znači pamtiti čim manje kompliciranih stvari. S toga ljudi ili smišljaju više lako pamtljivih šifri ili manji broj (obično jedan) master passworda.

OK, ljudi smo, imamo ograničeno pamćenje i strpljenje no kako da si pomognemo? Moderne tehnologije zaštite podataka se nažalost temelje passwordima. Koliko je "jaka" šifra, toliko su dobro zaštićeni podaci. Možemo si pomoći na dva načina, korištenjem tzv. passphrasea i zapisivanjem šifri koje ne možemo zapamtiti.

Passphrasei su zapravo šifre sastavljene od više nasumičnih riječi. Na primjer "AutoBakaCiklaDvoranaEtanol". Fora kod passphrasea je da su dugački kada se raspišu a lagani su za zapamtiti. No koliko je siguran ovakav pristup? Gore sam spomenuo navod iz članka koji tvrdi da password mora imat barem 10 znakova da bi se mogao smatrati sigurnim no brojanje slova u passphraseu ne daje pravu mjeru sigurnosti. Daleko od toga. Ako napadač pretpostavi da žrtva koristi passphrasse onda se može ograničiti na određen skup riječi a ne pogađat nasumce sve znakove.

Uzmimo s jedne strane passworde koji se sastoje isključivo od engleskih slova i brojki (ukupno 62 različita znaka) i s druge strane passphrasove načinjenih od nasumično odabranih riječi iz rječnika s 5000 riječi (vidi linkani člank s Coding Horrora). Ne toliko kompliciranom matematikom (log 5000 / log 62 = 2.0637) dobivamo da svaka riječ passphrasea vrijedi oko dva znaka passworda. Znači da bi postigli sigurnost passworda duljine 10 znakova, passphrase treba bit načinjen od 5 riječi. Ne zvuči baš puno bolji omjer sigurnosti i praktičnosti od klasičnih šifri. Ubacivanje nasumičnog znaka na nasumično mjesto može malo poboljšati sigurnost passphrase. Za passphrase AutoBakaCiklaDvoranaEtanol svako dodavanje nasumičnog znaka (slovo engleske abecede ili broj) podiže sigurnost za 1.78 znaka prethodno opisanog oblika passworda. No ako se u passphrase ubaci puno takvih znakova, izgubi poanta passphrasea. Passphrase zapravo postane dugački password sa svim manama passworda.

Druga metoda je korisnik za sve ima drugačiji i siguran password (dovoljno dugačak i nasumičan) i da ih sve ima zapisane na jednom mjestu. Znači, da korisnik ne pamti sve šifre nego da ih drži na sigurnom mjestu i kopira od tamo kada mu koja zatreba. Mane ovakvog pristupa su sigurnost i pristupačnost repozitorija šifri. Ako napadač probije zaštitu repozitorija, dobiva na raspolaganje sve šifre koje su pohranjene u njemu. Ako korisnik izgubi repozitorij (npr. krepa disk), gubi pristup šiframa i svime što te šifre otključavaju. E sad, ako je netko optimističan i misli da neće pobrati keyloggera ili neki sličan spyware, može probati Keepass 2 u kombinaciji s DropBoxom.

U svakom slučaju, za stvari koje su vam bitne imajte šifru duljine barem 10 znakova.

Friday, November 18, 2011

Zvjezdojedac, progress report

Napravih računalnog igrača koji nasumično gradi brodove i pripremih teren za pravi UI (umjetnu inteligenciju) koju će igra kasnije imati. Uz to dio te podloge bi se mogao iskoristiti i za multiplayer, za remote igrače.

Prošli feature na kraju nisam zapakirao i stavio na download jer nije bilo skoro ništa vidljivih promjena. Uvođenje jednostavne UI isto nije neki vidljivi napredak ali količna popravljenih stvari bi opravdala podizanje verzije za 0.0.1. Tako da ću ovih dana staviti za download novu verziju.

Edit:
Prema indikatoru na Google Codu, projekt je nazad na "high activity". Jupi!

Wednesday, October 12, 2011

Hit pointi i razine damagea

Jedna ideja za game mechanic koja mi se mota po glavi već duže vrijeme je podjela razine damagea na tri razine, shock, minor i major. Pod "razine damagea" u ovom slučaju mislim na hit pointe koji nedostaju unesrećenom, ne na snagu napada. Ideja je ovakva:
  • Major damage: ono što je trajno uništeno, što se ne može zakrpati. Npr. kad na letjelici nedostaje cijelo krilo. Jedini način popravka ovakve štete je vraćanje u tvornicu.
  • Minor damage: onaj dio štete koji unesrećeni može samostalno popraviti. Npr. ogrebotine i manje rane na čovjeku. Unesrećeni "umire" kada je zbroj minor i major damagea veći ili jednak od maksimumu hit pointa.
  • Shock damage: opterećenje obrane. Nije prava šteta no utječe na sposobnost primanja štete. Kod većih razina šoka napadi imaju rade veću štetu, bilo da se napadi vode kao jednostavno jači napada ili da rade ozbiljniji oblik štete (major umjesto minor i minor umjesto shock). Šok s vremenom nestaje, hlapi.
Nešto slično sam vidio u Mortal Kombatu gdje se dio štete može regenerirati ako igrač neko vrijeme ne prima novu štetu.

Ovaj sustav bi mogao lijepo funkcionirati u akcijskim igrama. Igrač ne mora imati puno veći maksimum hit pointa od protivnika da bi preživio višestruke okršaje a s druge strane smanjuje se potreba za omraženom pasivnom regeneracijom. RPGi bi se mogli dizajnirati tako da su paketi prve pomoći koji liječe minor damage lagani za nabaviti a napitci koji liječe major damage znatno skuplji ili da za oporavak od major damagea treba otići u grad kod iscjelitelja.

Još jedan primjer u kojem bi se ovaj sustav mogao iskoristiti su situacije gdje hrpa napadača sa slabim napadom napada dobro oklopljenu metu (12 Protoss Scouta protiv Ultraliska). Obično u tim slučajevima treba cijela vječnost da se uništi oklopljena meta no s ovim sustavom meta bi s vremenom primala sve veću štetu po napadu. To bi tjeralo napadnutog igrača da se aktivno brani čak i u bunkeru.

Monday, September 26, 2011

Zvjezdijedac, progress report

Upravljanje na razini zvjezdanog sustava je bilo gotovo u srijedu ali sam još uvijek nezadovoljan prezentacijom. Mogo bih staviti download ovih dana premda kažem, ne izgleda mi kao zaokružena cjelina. Nedostatke GUIa kanim u što većoj mjeri ispraviti u zadatku #38 (Overhaul colony info window) u kojem se ne bih ograničo samo na GUI za kolonije. 

Uz to, trebao bih konačno konsolidirati procesiranje turnova. Trebao bih si staviti na papir, odnosno napravit si nekakav dijagram na kojem je opisano što se kada računa. Hmmm, možda bih čak mogao dokument s tim dijagramom staviti u repozitorij. I svakako trebam čim više smanjiti ovisnost o podacima pohranjenim u generičnim <string, double> rječnicima. To bi sve moglo povezati sa zadatakom #33 (Turn processing in background) u kojem planiram među ostalom napraviti procesiranje turnova u pozadini.


I na koncu, opet bih mijenjao utjecaj uvjeta na planeti. Imam problema s konceptom da zračenje, gravitacija i atmosfera utječu na maksimun populacije. Što bi se trebalo dogoditi kada se uvjeti pogoršaju? Da li bi populacija koja prelazi novi maksimum trebala nestati u idućem turnu? Ja bih rađe da se ti uvjeti preslikavaju na teže održavanje i manju produktivnost kolonije. Još nisam otvorio zadatak za to ali bih svakako to riješio prije zaključivanja verzije 0.4.

Sunday, September 18, 2011

Zvjezdojedac, progress report

Implementacija upravljanja zvjezdanim sustavom je stvarno naporna stvar. Nakon čišćenja donjeg dijela sučelja  na redu je bilo izbacivanje vojne gradnje iz kolonije. To je prošlo manje više bezbolno. Ali dodavanje (više prenamjena stare vojne gradnje) upravljanja sustavom je potrajalo skoro cijeli tjedan. Još nije gotovo, GUI nisam skoro ni taknuo, ostalo je hrpa nekonzistentnih imena, sejvanje trenutno ne radi itd.

Nadam se da ću do srijede bit gotov s time i da će sjest download nove verzije.

Monday, September 12, 2011

Online kalkulatori

Pišući prošli post suočio sam se problemom izračuna limesa za modificiranu funkciju damage reductiona korištenu u igri Warlord Battlecry 3. Možda da nisam taj dio pisao u jedan sat u noći, možda bi sam rješio taj limes. U želji da čim prije odem spavat a da ne ostavljam dio posla nezaključen, upisah u Google "limes calculator". Naravno, Google je našao što tražim bez problema i limes je bio rješen za manje od minute.


Postoji cijelo more online kalkulatora. Prethodno spomenuti limes kalkulator samo je dio alata koje The Number Empire nudi. Ostali alati koji site nudi variraju od rješavača sustava jednadžbi i određivanja derivacije do egzotičnih alata kao što je kalkulator inverza funkcije. Još jedna od "alatki" na koju sam naletio je handymath.com sa zanimljivim alatima vezanim za geometriju, fiziku i kemiju.

Edit:

Nakon x godina života u ne znanju otkrih Wolfram Alphu. Stranica je Google za matematičke operacije. Možete upisati bilo koji pojam, jednadžbu ili tekstualno opisan problem i sustav će ga pokušati riješiti. Lijepo definirane probleme kao što je upit na slici riješava bez problema a dobro se snalazi i s puno složenijim upitima. Jako lijepa stvar kod ove usluge je temeljitost rezultata (grafički prikaz, koraci računa, svojstva dobivenog rezultata) ali još više mi se dopalo što kod složenijih upita lijepo napiše kako je input interpretiran.