Nie tylko tłumaczeniem czatu z developerami żyje czytelnik naszej witryny, chyba że się mylę? Zarówno w samej rozmowie z duetem Dustin Browder i Chris Sigaty jak i w komentarzach do wiadomości pojawiają się liczne pytania dotyczące nowego Edytora Map, który ma zostać udostępniony w StarCraft II: Wings of Liberty. Swoją drogą przypomnę, że jego „premierę” w/w duet zapowiedział przed końcem kwietnia! Właściwie jak na zawołanie przychodzi tutaj redakcja serwisu SC2Armory, konkretniej gearvOsh, który poszperał ostatnio w plikach MPQ gry i znalazł przykłady kodu źródłowego, jaki generuje język „Galaxy”.
unit AIEarlyDefScoutZerg (int player, unit prev) {unit obs;if (!AIGetFlag(player, e_flagsEarlyDefScout)) {return c_nullUnit;}if (UnitGetType(prev) == c_ZU_Overseer) {return prev;}obs = AIGrabUnit(player, c_ZU_Overseer, c_prioScout, null);if (obs) {return obs;}if (UnitGetType(prev) == c_ZU_Zergling) {return prev;}obs = AIGrabUnit(player, c_ZU_Zergling, c_prioScout, null);if (obs) {return obs;}if (prev) {return prev;}return AIGrabUnit(player, c_ZU_Drone, c_prioScout, null);}
bool AIWaveNeedClearObsUnits (int player) {unit obstruction = null;wave waveClob = null;wave waveAtck = null;int countClob = 0;int countAtck = 0;int evalAtck = 0;// Check global optionif (AIGetFlag(player, e_flagsClearObs) == false) {return false;}// Don't clear obstructions in the first 10 minutes (leaves the AI too open to being rushed)if (AIGetTime() < 600) {return false;}// See if there is any obstructionobstruction = AIGetObstruction(player);if (obstruction == null) {return false;}// See if the clear obstruction wave is already fullwaveClob = AIWaveGet(player, c_waveClearObs);countClob = AIWaveUnitCount(waveClob);if (countClob >= 4) {return false;}// If the attack wave is getting weak, keep units available for it insteadwaveAtck = AIWaveGet(player, c_waveAttack);countAtck = AIWaveUnitCount(waveAtck);evalAtck = AIWaveEvalRatio(waveAtck, c_evalRange);if (countAtck > 0 && evalAtck < 80) {return false;}// Yes, units are needed for clear obstruction dutyreturn true;}
void ProtossOpenGnd0 (int player) {AIClearStock(player);AISetStock( player, 1, c_PB_Nexus );AISetStock( player, 8, c_PU_Probe );AISetStock( player, 1, c_PB_Pylon );// around 100 resources in about 2 unitsAISetStock( player, 1, c_PU_Zealot );ProtossTechUp(player, 1);if (AIEnableVeryEasyStockOpen(player, c_PU_Probe)) {return;}// around 300 resources in about 3 unitAIAddStringInt(player, c_PU_Stalker, 1);AIAddStringInt(player, AIPickFrom2(c_PU_Zealot, c_PU_Disruptor), 1);}
Większość z osób, które miały styczność z programowaniem zauważy tu zapewne pewne podobieństwa składni do tych występujących w C czy Javie. Ciężko powiedzieć to na 100% ale z powyższych przykładów wynika, że Galaxy jest językiem bardziej proceduralnym niż obiektowym. Ale kto wie, może okaże się, że to tylko mylne odczucie wynikające z tak skromnej ilości przykładów. Myślę jednak, że i tak część z osób mogą te informacje zainteresować ;)