A short Croatian language opinion post on use of Objective-C in games
Dobio sam nedavno pitanje o tome da li se isplati učiti Objective-C (u kontekstu igara).
Moje je mišljenje da Objective-C ima deset puta logičniju internu strukturu nego C++, te da je svojom kombinacijom karakteristika dinamičnih i statičnih jezika izuzetno pogodan za pisanje igara. Primjerice, evo stvaranje kapitalnog svemirskog broda koristeći string, i spremanje istog u SvemirskiBrod
:
NSString* nekaj = @"KapitalniSvemirskiBrod"; SvemirskiBrod *nekiBrod = [[NSClassFromString(nekaj) alloc] initWithPosition:CGPointMake(10, 10)];
Ovo je jako dobro jer se ovakva XML specifikacija mape:
može lako učitati s primjerice (ako imamo teoretsku klasu XMLNode
i varijablu trenutniNode
):
NSString *tipBroda = [trenutniNode atribut:tip]; CGPoint pozicija = CGPointMake([trenutniNode atribut:x], [trenutniNode atribut:y]); Class klasaBroda = NSClassFromString(tipBroda); SvemirskiBrod *brod = [[klasaBroda alloc] initWithPosition:pozicija];
Tu su i druge mogućnosti, tipa lakše pozivanje funkcije nad objektom u nekom mini-skriptnom jeziku koji smisliš (bez razmišljanja o statičkim funkcijama, callbackovima, member-function-pointerima i slično, kao u C i C++).
Pozivanje nepostojeće funkcije (npr [svemirskaStanica udjiUHyperspace];
) je samo warning, što znači da se tebi vjeruje da će ta funkcija postojati u toj varijabli. Ako ne postoji, onda će se program skršiti. Postoji provjera da li neka varijabla sadrži neku funkciju.
Ekvivalent std::vector
a je NSArray
koji unutra može spremati bilo kakve Objective-C objekte. Znači ne moraš templateove slagati i forsirati da se unutra nalaze samo, primjerice, NSString
ovi, nego se unutra mogu nalaziti i SvemirskaStanica
i SvemirskiBrod
i KapitalniSvemirskiBrod
.
Uglavnom, iz svega navedenog vidi se da smatram da je Objective-C odličan jezik koji spaja najbolje stvari iz Pythona i C/C++. S obzirom da se u Objective-C može pisati i za Windowse i za Linux koristeći Cocotron i GNUstep, te konačno za Mac i iPhone koristeći Appleove Cocoa i Cocoa Touch, mislim da je to dovoljno portabilan jezik za razvoj igara.
Što se tiče aplikacija, odlično je i za izradu toga, ali relativno manje portabilno ako gledamo naprednije mogućnosti frameworka.
Dakle, da, isplati se 🙂
–
via blog.vucica.net