Pre jedno 3 godine ja sam non-stop igrao online igru "Ogame". Bio sam bas navucen i onako, iz zezanja, sam hteo da sam pokusam da napravim nesto slicno. U to vreme nisam imao pojma ni o WCF-u ni o socket-ima, samo sam sa vremena na vreme (kad ugrabim malo vremena) dodavao nove mogucnosti u igru, kuckao po malo. Vremenom ta igra je postala prilicno komplikovana (ovo je dijagram klasa http://img696.imageshack.us/img696/4820/classdiagram1i.jpg).
E sad, imam ogroman problem: kao sto rekoh, kada sam pocinjao sa radom nisam imao pojma dokle ce sve stici, nisam ni planirao podrsku za vise igraca (sto bi se ocekivalo od jedne igre, zar ne? :D), nisam znao ni za WCF niti bilo sta sl. Vremenom sam naucio WCF ali sad imam dilemu - kako da podelim igru na serverski i klijentski deo ai tako da vise razlicitih igraca mogu da dele informacije o, recimo, zauzetim teritorijama i sl? Da li da sve stavim na server, a samo interfejs u klijentski deo, ili da na server stavim samo onaj deo igre koji sluzi za sinhronizaciju vise igraca i pamcenje promena u bazu?
Da stvar bude gora, igru sam pravio koristeci "factory" design pattern sto znaci da kompletna aplikacija radi sa interfejsima. Znaci imam jednu klasu (recimo "kuca") koja je definisana interfejsom. Klasi "kuca" moze da pristupi samo "fabrikaKuca" koja napravi objekat "kuca" i ostatku aplikacije vraca interfejs "IKuca". Ostatak aplikacije ne moze direktno da koristi klasu "kuca", vec samo interfejs "IKuca". Uceci WCF shvatio sam da je problem to sto sa WCF-om ne mogu da komuniciram putem interfejsa (kada WCF metodi kazem da prima interfejs kao argument taj interfejs se tretira kao "object"). Da li neko ima neko resenje za ovaj problem sa interfejsima?
Zaista bi mi trebalo misljenje nekog iskusnog, imam neki utisak da bi me korak u pogresnom pravcu kostao dosta vremena i zivaca :)