Scriptcraft jest grą polegającą na zaprogramowaniu własnych jednostek (zbieraczy minerałów, czołgów i budujących je baz) tak, aby pokonać innych graczy. Internetowy wieloosobowy (MMORTS!) pierwowzór dostępny jest pod adresem http://informatyka.wroc.pl/scriptcraft, natomiast ten projekt jest jego klonem, dzięki któremu można uruchomić Scriptcrafta na własnym komputerze. W ten sposób można szybko przetestować programy swoich jednostek, zanim zmierzą się one z prawdziwymi graczami w internetowej wersji Scriptcrafta!
Na razie Scriptcraft udostępnia podstawowe funkcje i możliwości:
- Zaimplementowana jest taka sama funkcjonalność jak w internetowej wersji --
można wysyłać wiadomości między jednostkami oraz tzw. zapytania systemowe
(zobacz dokumentację gry). Wszystkie polecenia wydawane jednostkom przez
Twoje programy są interpretowane tak samo z wyjątkiem polecenia
PROGRAM
, które w chwili obecnej nie jest zaimplementowane. W zamian za to nowo produkowane jednostki otrzymują taki sam program jaki ma baza. - Dostępna jest jedna mapa (taka sama jak na tzw. szybkim świecie) o rozmiarze 64x64.
- Programy można pisać w następujących językach:
python
,c++
(dodanie kolejnych nie jest problemem, jeśli jesteś zainteresowany -- pisz); ponadto istnieje tzw. star-program, który wykonuje polecenia wysyłane przez inną jednostkę. Do wyboru jest także "język"output
służący do bezpośredniego wydawania komend. Programy są zabijane w przypadku przekroczenia limitu czasu, ale nie są uruchamiane w wyizolowanym środowisku. - Polecenia można wydawać także przy pomocy myszki.
- Gry można zapisywać i wczytywać.
- Mapy są zapisywane w formacie tekstowym i można łatwo samemu stworzyć swoją mapę.
Dostępna jest skompilowana wersja pod Windowsa -- instalacja Pythona nie jest konieczna. Scriptcraft można zainstalować także ze źródeł (wymagany Python 2.6 lub 2.7, system Windows lub Linux).
Ściągnij to archiwum zip i rozpakuj. Gotowe!
Potrzebujesz Pythona w wersji 2.6 lub 2.7 (ale nie 3.x!) z zainstalowanym
PIL oraz tcl/tk
. Pod Ubuntu wystarczy wpisać w shellu:
sudo apt-get install python-imaging-tk tk8.5 tk8.5-dev tcl8.5 tcl8.5-dev python-tk sudo pip install PIL
Potrzebujesz także kod źródłowy z githuba.
git clone https://github.com/chrismedrela/scriptcraft.git
Scriptcraft do kompilacji i wykonywania programów korzysta z zewnętrznych
programów takich jak np. kompilator g++
. Aby móc programować w danym
języku, musisz wskazać jakie polecenia mają być wykonane, aby skompilować i
wykonać program w danym języku. W szczególności, aplikacja gry musi wiedzieć,
gdzie znajduje się kompilator.
Pod Linuxem wystarczy sprawdzić w bashu, czy komendy g++
oraz python
są rozpoznawane, a jeśli nie są, to shell podpowie Ci, jakie pakiety musisz
doinstalować. Pamiętaj, że nie jest to wymagane, jeżeli nie zamierzasz
programować w danym języku.
Pod Windowsem otwórz plik konfiguracji configuration.ini
znajdujący się w
głównym katalogu gry. Jest on podzielony na sekcje i każda z nich z wyjątkiem
sekcji DEFAULT
odpowiada jednemu językowi. W każdej sekcji języka, w
którym zamierzasz programować, musisz zmienić wiersze rozpoczynające się od
compile
i execute
oznaczające kolejno: polecenie kompilacji i
wykonania.
Na przykład, jeżeli chcesz programować w C++
, musisz znaleźć
kompilator. Jeżeli korzystasz z jakiegoś środowiska programistycznego
(np. DevCpp), to powinieneś już go mieć. Musisz znaleźć aplikację o nazwie
g++.exe
. Jeżeli posiadasz DevCpp zainstalowany w folderze C:\DevCpp
,
to ścieżka do kompilatora to C:\DevCpp\bin\g++.exe
. W takim przypadku
sekcja CPP
pliku configuration.ini
mogłaby wyglądać tak:
[CPP] sourceextension = cpp binaryextension = exe compile = "C:\DevCpp\bin\g++.exe" src.cpp -o bin.exe execute = bin.exe
Jeżeli zamierzasz programować w Pythonie, sprawdź czy masz go
zainstalowanego. Na dysku C:
poszukaj folderu o nazwie rozpoczynającej się
od Python
i zakończonej dwoma cyframi, np. Python26
. Interpreter
Pythona znajduje się wewnątrz tego katalogu i jest nazwany
Python.exe
. Jeżeli nie masz jeszcze zainstalowanego Pythona, ściągnij
instalator stąd. Przykładowa sekcja PYTHON
pliku konfiguracji mogłaby
wyglądać tak:
[PYTHON] sourceextension = py binaryextension = py compile = copy src.py bin.py execute = "C:\Python26\Python.exe" bin.py
Po dokonaniu zmian pamiętaj o zapisaniu pliku. Teraz możesz już uruchomić grę. Pod Windowsem musisz dwukrotnie kliknąć na ikonę pliku "scriptcraft.exe". Jeżeli ściągnąłeś źródła, przejdź do folderu z grą i wpisz w bashu:
python runclient.py
Po pojawieniu się pustego okna gry tworzymy nową grę wybierając z menu Gra
opcję Nowa gra
lub używając skrótu Ctrl+n
. Następnie należy dodać
graczy (opcja Dodaj gracza
). Każdy gracz otrzymuje na początku bazę z
pewną ilością zmagazynowanych minerałów oraz cztery zbieracze minerałów w
okolicach złóż minerałów.
Mapę można przesuwać przytrzymując lewy przycisk myszy. Rolka myszy służy do powiększania i pomniejszania. Pojedyncze kliknięcie lewym przyciskiem myszy służy do zaznaczania jednostek. Zaznaczonej jednostce można wydać komendę ruchu (wokół wskazanego pola pojawia się wtedy zielony pierścień), ataku (czerwony pierścień) lub zbierania minerałów (granatowy pierścień) poprzez kliknięcie prawym klawiszem myszy na dowolnym polu mapy. Podwójne kliknięcie lewym przyciskiem myszy otworzy nowe okno, gdzie można edytować kod programu klikniętej jednostki oraz sprawdzić wynik jego kompilacji i wykonywania.
W celu uruchomienia gry, musisz wybrać opcję Symuluj jedną turę
gry
lub nacisnąć na klawiaturze przycisk t
. Możliwe jest obserwowanie
przebiegu gry "w czasie rzeczywistym", tzn. symulując kolejne tury gry jedna
za drugą poprzez wybranie opcji Symulacja gry w pętli
lub naciśnięcie
spacji.
Aby zaprogramować jednostkę, kliknij na nią dwukrotnie, a w otwartym oknie wybierz język programowania oraz wpisz kod. Zamknij okno, zasymuluj jedną turę gry i otwórz okno z powrotem aby sprawdzić, czy program został skompilowany oraz co wyrzucił na wyjście. Zamiast otwierać okno możesz wskazać jednostkę myszką i sprawdzić, jaka komenda została wydana obserwując tekst w lewym górnym rogu.
Oprócz tego jednostka może: nie mieć programu lub może mieć tzw. "star
program" polegający na odbieraniu wiadomości od innych jednostek i wykonywaniu
zawartych w nich komend. W przypadku wybrania jednej z tych dwóch opcji
zawartość pola tekstowego "Kod" jest ignorowana. Ponadto na liście języków
istnieje opcja output
która wypisuje na wyjście to, co zostałe wpisane
jako kod programu. Pozwala to na bezpośrednie wpisanie komend do wykonania.
Twój program otrzymuje na wejściu informacje dotyczące sterowanej przez niego
jednostki, jej otoczenia oraz wysłane do niej wiadomości. Na wyjściu programu
powinna znaleźć się komenda oraz ewentualnie wiadomości do wysłania. Wejście
oraz sposób interpretacji wyjścia są dokładnie takie same jak w internetowej
wersji (z wyjątkiem komendy PROGRAM
, która obecnie nie jest
zaimplementowana) i są opisane w dokumentacji internetowej wersji
Scriptcrafta.
Mam problemy z instalacją lub konfiguracją. / Aplikacja eksplodowała w powietrze. / Znalazłem błąd! / Pod Windowsem po dwukrotnym kliknięciu na ikonę gry nic się nie dzieje.
Jeżeli tylko masz czas i chęć, zgłoś ten problem do mnie. Pozwoli mi to na ulepszenie aplikacji. Jeżeli problem nie dotyczy instalacji ani konfiguracji, postaraj się wysłać mi także logi gry (plik
.scriptcraft
oraz pod Windowsemscriptcraft.exe.log
).Skontaktować się ze mną możesz na polskim forum Pythona, na forum Wrocławskiego Portalu Informatycznego lub mailowo (mój adres to
chris.medrela+scriptcraft [zwierzątko] gmail.com
).
Czy istnieje tutorial wprowadzający w świat Scriptcrafta?
Tak, na potrzeby internetowej wersji zostało opracowane to krótkie wprowadzenie.