StarCraft 2 - wersja tekstowa


strona główna




Nowości - | O Keye.pl - | Turnieje - | Publicystyka - | Encyklopedia - | Media - | Redakcja - |


Przykładowy kod źródłowy z Galaxy Editor'a - wersja graficzna tekstu

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”. Zainteresowani przykłady znajdą w rozwinięciu wiadomości.

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”.

Rozszerzeniem plików nowego edytora będzie konwencja .galaxy. Poniżej obiecane przykłady.
 
Przykład #1
 
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);
}
Przykład #2:
 
bool AIWaveNeedClearObsUnits (int player) {
    unit obstruction = null;
    wave waveClob = null;
    wave waveAtck = null;
    int countClob = 0;
    int countAtck = 0;
    int evalAtck = 0;
 
    // Check global option
    if (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 obstruction
    obstruction = AIGetObstruction(player);
    if (obstruction == null) {
        return false;
    }
 
    // See if the clear obstruction wave is already full
    waveClob = AIWaveGet(player, c_waveClearObs);
    countClob = AIWaveUnitCount(waveClob);
    if (countClob >= 4) {
        return false;
    }
 
    // If the attack wave is getting weak, keep units available for it instead
    waveAtck = 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 duty
    return true;
}
Przykład #3:
 
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 units
    AISetStock( player, 1, c_PU_Zealot );
    ProtossTechUp(player, 1);
   
                if (AIEnableVeryEasyStockOpen(player, c_PU_Probe)) {
                               return;
                }
 
    // around 300 resources in about 3 unit
                AIAddStringInt(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ć ;)

 


13 marca 2010
Data modyfikacji : dn. 14 marca 2010

Zawartość działu

| Nowości |

| O Keye.pl |

| Turnieje |

| Publicystyka |

| Encyklopedia |

| Media |

| Redakcja |


|Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0| Valid XHTML 1.0!| Valid CSS!|

ostatnia aktualizacja serwisu: 08.09.2010
liczba osób, które odwiedziły nasz serwis: 9.444.080


StarCraft 2 - wersja tekstowa
redakcja serwisu

© 2000-2010 StarCraft 2 - wersja tekstowa.
Wszelkie prawa zastrzeżone.
Przy wykorzystywaniu materiałów wymagane jest podanie źródła.