Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 
Polski Portal COLOBOTa
COLOBOT Polish Portal

Modyfikacje kodu gry - [Poradnik] Jak skompilować kod?

Programerus - 08-03-2012, 23:34
Temat postu: [Poradnik] Jak skompilować kod?
Bez zbędnych wstępów:

1. Pobieramy i instalujemy Microsoft Visual C++ 6 (linka nie podaję, jest na torrentach).
2. Pobieramy i instalujemy DirectX 8 SDK (Link).
3. Pobieramy lekko zmodyfikowane 2 pliki z kodem (Link).
4. Otwieramy projekt.
5. Wchodzimy w Project -> Settings.
6. W zakładce Link zmieniamy zmieniamy umiejscowienie bibliotek DirectX tam gdzie je zainstalowaliśmy.
7. Wchodzimy w Tools -> Options.
8. W zakładce Directories dopisujemy folder, w którym są include oraz library DX SDK które zainstalowaliśmy i przerzucamy je na samą górę (tak, aby najpierw sprawdzało te foldery).
9. Kompilujemy.
10. Odpalamy przez debuggera(Ctrl+F5).
11. Cieszymy się własnoręcznie skompilowanym Colobotem :)

Mam nadzieję, że pomogłem wielu osobom, które miały problem z kompilacją, a także że ten poradnik jest wystarczająco czytelny i zrozumiały. :)

Jeśli macie jakieś dalsze problemy z kompilacją, bądź pytania piszcie w temacie, postaram się pomóc.

Raptor - 09-03-2012, 19:29

Poradnik dobry. Jednak, chłopcy, postąpiłem wg niego i wyszło mi coś takiego:
Kod:
--------------------Configuration: projet1 - Win32 Release--------------------
Compiling resources...
Compiling...
auto.cpp
autobase.cpp
autoconvert.cpp
autoderrick.cpp
autodestroyer.cpp
autoegg.cpp
autoenergy.cpp
autofactory.cpp
autoflag.cpp
autohuston.cpp
autoinfo.cpp
autojostle.cpp
autokid.cpp
autolabo.cpp
automush.cpp
autonest.cpp
autonuclear.cpp
autopara.cpp
autoportico.cpp
autoradar.cpp
autorepair.cpp
autoresearch.cpp
autoroot.cpp
autosafe.cpp
autostation.cpp
autotower.cpp
blitz.cpp
brain.cpp
button.cpp
camera.cpp
cbottoken.cpp
check.cpp
cloud.cpp
cmdtoken.cpp
color.cpp
compass.cpp
control.cpp
d3dapp.cpp
C:\Program Files\Microsoft DirectX 8.1 SDK\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d3dengine.cpp
d3denum.cpp
d3dframe.cpp
d3dmath.cpp
d3dtextr.cpp
d3dutil.cpp
displayinfo.cpp
displaytext.cpp
edit.cpp
editvalue.cpp
event.cpp
gauge.cpp
group.cpp
image.cpp
iman.cpp
interface.cpp
joystick.cpp
key.cpp
label.cpp
light.cpp
list.cpp
maindialog.cpp
mainmap.cpp
mainmovie.cpp
D:\Z Robota\HardWork\mainmap.cpp(201) : warning C4700: local variable 'pw' used without having been initialized
mainshort.cpp
map.cpp
math3d.cpp
metafile.cpp
misc.cpp
model.cpp
modfile.cpp
motion.cpp
motionant.cpp
motionbee.cpp
motionhuman.cpp
motionmother.cpp
motionspider.cpp
motiontoto.cpp
motionvehicle.cpp
motionworm.cpp
object.cpp
particule.cpp
physics.cpp
planet.cpp
profile.cpp
pyro.cpp
restext.cpp
robotmain.cpp
script.cpp
scroll.cpp
D:\Z Robota\HardWork\script.cpp(1500) : warning C4700: local variable 'iAngle' used without having been initialized
shortcut.cpp
slider.cpp
sound.cpp
studio.cpp
target.cpp
task.cpp
taskadvance.cpp
taskbuild.cpp
taskfire.cpp
taskfireant.cpp
taskflag.cpp
taskgoto.cpp
taskgungoal.cpp
taskinfo.cpp
taskmanager.cpp
taskmanip.cpp
taskpen.cpp
taskrecover.cpp
taskreset.cpp
tasksearch.cpp
taskshield.cpp
taskspiderexplo.cpp
tasktake.cpp
taskterraform.cpp
taskturn.cpp
taskwait.cpp
terrain.cpp
text.cpp
water.cpp
window.cpp
Linking...
LINK : fatal error LNK1181: cannot open input file "C:\Program.obj"
Error executing link.exe.

projet1.exe - 1 error(s), 2 warning(s)

O co chodzi z plikiem "Program.obj"? I czy te dwa ostrzeżenia to normalne?

Programerus - 09-03-2012, 20:07

Te dwa ostrzeżenia są normalne, co do tego drugiego masz chyba coś źle ustawione, bo nie powinno wyszukiwać takiego pliku jak program.obj
Raptor - 10-03-2012, 13:30

Udało mi się. Zamiast tak:
WielkiBrat napisał/a:
5. Wchodzimy w Project -> Settings.
6. W zakładce Link zmieniamy zmieniamy umiejscowienie bibliotek DirectX tam gdzie je zainstalowaliśmy.

Po prostu umieściłem wszystkie te pliki do standardowego katalogu, który był już zdefiniowany w projekcie: "c:\dx7sdk\lib".

Tylko te pliki są potrzebne:
Kod:
d3dx.lib
ddraw.lib
dinput.lib
dsound.lib
dxguid.lib

Ciekawe, co by było, gdyby skompilować z nowszą wersją Microsoft DirectX SDK, np. 9.0c. Może wydajność by skoczyła? Wiem co mówię. Mam stare maszyny i kilka gier z tamtych lat. Niektóre posiadają lepszą grafikę i efekty niż CoLoBoT i działają nawet płynniej, niż CoLoBoT z pełnymi detalami w rozdzielczości choćby 800x600 z wieloma obiektami na mapie.

Kod:
--------------------Configuration: projet1 - Win32 Release--------------------
Compiling resources...
Compiling...
auto.cpp
autobase.cpp
autoconvert.cpp
autoderrick.cpp
autodestroyer.cpp
autoegg.cpp
autoenergy.cpp
autofactory.cpp
autoflag.cpp
autohuston.cpp
autoinfo.cpp
autojostle.cpp
autokid.cpp
autolabo.cpp
automush.cpp
autonest.cpp
autonuclear.cpp
autopara.cpp
autoportico.cpp
autoradar.cpp
autorepair.cpp
autoresearch.cpp
autoroot.cpp
autosafe.cpp
autostation.cpp
autotower.cpp
blitz.cpp
brain.cpp
button.cpp
camera.cpp
cbottoken.cpp
check.cpp
cloud.cpp
cmdtoken.cpp
color.cpp
compass.cpp
control.cpp
d3dapp.cpp
C:\Program Files\Microsoft DirectX 8.1 SDK\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d3dengine.cpp
d3denum.cpp
d3dframe.cpp
d3dmath.cpp
d3dtextr.cpp
d3dutil.cpp
displayinfo.cpp
displaytext.cpp
edit.cpp
editvalue.cpp
event.cpp
gauge.cpp
group.cpp
image.cpp
iman.cpp
interface.cpp
joystick.cpp
key.cpp
label.cpp
light.cpp
list.cpp
maindialog.cpp
mainmap.cpp
mainmovie.cpp
D:\Z Robota\HardWork\mainmap.cpp(201) : warning C4700: local variable 'pw' used without having been initialized
mainshort.cpp
map.cpp
math3d.cpp
metafile.cpp
misc.cpp
model.cpp
modfile.cpp
motion.cpp
motionant.cpp
motionbee.cpp
motionhuman.cpp
motionmother.cpp
motionspider.cpp
motiontoto.cpp
motionvehicle.cpp
motionworm.cpp
object.cpp
particule.cpp
physics.cpp
planet.cpp
profile.cpp
pyro.cpp
restext.cpp
robotmain.cpp
script.cpp
scroll.cpp
D:\Z Robota\HardWork\script.cpp(1500) : warning C4700: local variable 'iAngle' used without having been initialized
shortcut.cpp
slider.cpp
sound.cpp
studio.cpp
target.cpp
task.cpp
taskadvance.cpp
taskbuild.cpp
taskfire.cpp
taskfireant.cpp
taskflag.cpp
taskgoto.cpp
taskgungoal.cpp
taskinfo.cpp
taskmanager.cpp
taskmanip.cpp
taskpen.cpp
taskrecover.cpp
taskreset.cpp
tasksearch.cpp
taskshield.cpp
taskspiderexplo.cpp
tasktake.cpp
taskterraform.cpp
taskturn.cpp
taskwait.cpp
terrain.cpp
text.cpp
water.cpp
window.cpp
Linking...

projet1.exe - 0 error(s), 2 warning(s)

cyklopek11 - 13-03-2012, 17:48

Witam wszystkich. Kompiluje kod wg wskazówek, odpalam ctrl + F5 i wyskakuje mi abym włożył płytę??? W kodzie źródłowym nic na razie nie grzebałem ? Jak to uruchomić?
Raptor - 13-03-2012, 17:54

cyklopek11 napisał/a:
Witam wszystkich. Kompiluje kod wg wskazówek, odpalam ctrl + F5 i wyskakuje mi abym włożył płytę??? W kodzie źródłowym nic na razie nie grzebałem ? Jak to uruchomić?

Jest to standardowe ustawienie w pliku "language.h". Da się skompilować CoLoBoT'a do wersji niewymagającej instalacji/płyty instalacyjnej. BTW: Musimy popracować nad dokumentacją tych ustawień z tego pliku. Jest masa kombinacji związanych ze wszystkimi CeeBot'ami i CoLoBoT'ami.

[ Dodano: 13-03-2012, 17:58 ]
Już mam:

W pliku "language.h" jest linia:
Kod:
#define _NET

Trzeba zamienić jej wartość z FALSE na TRUE i powinno startować.

cyklopek11 - 13-03-2012, 19:05

Niestety nie działa! Skompilowane w trybie DEMO powoduje powstanie okienka i pożera 50% mocy procesora i tak już wisi. Czy komuś udało się w ogóle uruchomić to po kompilacji ???
Programerus - 13-03-2012, 19:15

Tak, bezproblemowo. Nie modyfikowałem niczego w language.h
cyklopek11 - 13-03-2012, 19:20

Ja też nie i wyskakuje mi włóż płytę :cry:
Raptor - 13-03-2012, 19:30

Programerus napisał/a:
Tak, bezproblemowo. Nie modyfikowałem niczego w language.h

Bo masz widocznie zainstalowanego CoLoBoT'a i masz stosowną wartość w rejestrze. Ja zawsze korzystam z mojej wersji portable'owej i nie mam oficjalnie zainstalowanego w systemie. Dlatego pewnie mnie też wyskakiwał ten sam błąd, co cyklopkowi.

musznik - 13-03-2012, 22:20

Co do problemu z włożeniem płyty to w pliku d3dapp.cpp w funkcji Error CD3DApplication::RegQuery() jako pierwszą linijka kodu, dodać - return ERR_OK;

dodam że bezproblemowo skompilowałem kod pod Visual Studio 2010, a błąd którym sypało na lewo i prawo wyeliminowałem dopisując gdzieś "#define POINTER_64" - w którym pliku, nie pamiętam, ale w logach będzie wiadomo ;)

ps. po kompilacji grafa się krzaczy, i nic nie widać - pracuje nad tym

Programerus - 13-03-2012, 22:27

Musznik, jak Ci się grafa krzaczy to zmień w ustawieniach grafiki urządzenie.
Raptor - 13-03-2012, 22:35

musznik napisał/a:
ps. po kompilacji grafa się krzaczy, i nic nie widać - pracuje nad tym

Może chodzi o nieprawidłowe pliki colobot#.dat? Umieść gotową binarkę do katalogu ze swoim oryginalnym CoLoBoT'em albo zbuduj przy pomocy skryptów BAT aMakeList*.bat właściwe pliki colobot#.dat. Skrypty te są w źródle, w katalogach kolejno textures dla colobot1.dat, objects dla colobot2.dat i sound dla colobot3.dat.

cyklopek11 - 13-03-2012, 23:52

Jak masz problemy z grafą to może to być wina colobot1.dat. Weź ostateczną polską wersję z katalogu polish/polish4.zip . Problem powinien zniknąć.

[ Dodano: 14-03-2012, 12:26 ]
Myślę, że dobrze byłoby aby każdy z nas zabrał się za jeden plik źródłowy (.cpp)
- przetłumaczył oryginalne komentarze wraz ze zrozumieniem
- "wgryzł" się w kod, dopisał własne komentarze, spisał i opisał (tak jak zrozumiał z kodu) zmienne i funkcje z danej klasy. Taki Help. Wiem, że teraz każdy rzucił się od razu na wszystkie pliki źródłowe (ja też), chce wcielać w życie elementy których mu zabrakło w oryginalnym colobocie.

JockX - 14-03-2012, 22:00
Temat postu: Dodatkowe instrukcje?
Mam 3 pytana. Po pierwsze, jak postępować aby skompilować program na współczesnych kompilatorach? Instrukcja z pierwszego postu zgadza się dla Visual Studio 6, ale jak zrobić to na Visual C++ 2010 Expres lub Code::Blocks? Ten pierwszy marudzi, że nie może otworzyć pliku projektu (Project upgrade failed.), a ten drugi przy buildowaniu sypie błędami:
Kod:
E:\inne\DXSDK\include\d3dtypes.h|1096|error: redefinition of 'D3DVT_FORCE_DWORD'|
E:\inne\DXSDK\include\d3dtypes.h|1095|error: 'D3DVT_FORCE_DWORD' previously defined here|
E:\Downloads\ceebot\Robot\projet1\D3DApp.h|23|error: use of enum 'D3DMouse' without previous declaration|
...oraz ponad 20 innych, podobnych.

Drugie pytanie: Po skompilowaniu w VS6 gra uruchamia się. Po wyedytowaniu w language.h:
Kod:
#define _FRENCH            FALSE
#define _ENGLISH        TRUE
nawet po angielsku, jednak pliki z pomocami, mission obcjectives itp. są nadal po francusku. Co i gdzie powinienem podmienić? Widzę w paczce także polskie wersje, ale nie bardzo orientuję się, co gdzie powinno wylądować.

No i ostatnie pytanie: Jakie kroki należy wykonać, aby przygotować katalog z którego można przeprowadzić zwykłą instalację? To co jest w katalogu projet1/install uruchamia się, ale nie może skopiować żadnego pliku, więc wyrzuca podczas działania 500 błędów i kończy się :) , z kolei próba uruchomienia projet.exe poza VS6 kończy się wyświetleniem komunikatu o konieczności instalacji aplikacji.

musznik - 14-03-2012, 22:22

co do vs 2010, udało mi się skompilować po ustawieniu innych toolsów tzw. Project -> properties -> general -> Platform Toolset = Windows7.1 SDK. + To co opisałem w poście wyżej. No i ruszyło, ale grafa się posypała. Mimo tego w trybie emulacji RGB chodzi, prawie.. i to z 1 FPS'em ;]
Schocker - 15-03-2012, 00:28

A ja spróbowałem to skompilować na wirtualnej maszynie XPka, tzn. na czystym systemie. I coś mi tu nie wychodzi, bo wywala "Gra COLOBOT nie jest zainstalowana", w każdym przypadku - _NET na TRUE, DEMO na TRUE, cokolwiek zmienię, zawsze ten sam komunikat. Instalowałem tylko standardowe biblioteki (JRE etc.), Firefoksa, Eclipse, VC++ ^ i DirectX 8 SDK (z linku podanego w pierwszym poście). Any ideas?
krzys_h - 15-03-2012, 07:21

Bo nie ma wpisanych wartości w rejestrze, kiedyś stworzyłem temat, gdzie opisałem jak je dodać. Można też zainstalować oryginalnego colobota z płyty.

[ Dodano: 15-03-2012, 07:22 ]
Albo uruchomić z -nocd, też powinno działać.

PoxiPol - 15-03-2012, 13:06

Schocker, jak bede w domu, to tobie podam plik rejestracji. Wystarczy wtedy wlaczyc edytor plikow .reg, i go wlozyc, albo po prostu kliknac na ten plik. Ale to dopiero o 16 czy 17.
krzys_h - 15-03-2012, 14:51

Jest w dziale "Modyfikacje" w temacie "Dane colobota w rejestrze" (nie mogę dać linka bo piszę z komórki)
Schocker - 15-03-2012, 15:39

krzys_h napisał/a:
Jest w dziale "Modyfikacje" w temacie "Dane colobota w rejestrze"


Oo, dziękuję. Nie wiem czemu, ale wcześniej tego wątku nie zauważyłem. Myślę, że można dodać link do niego w pierwszym poście - nie wiadomo, komu się przyda. ^^

musznik - 17-03-2012, 10:35

Wciąż nie moge rozwikłać problemu graku grafiki po kompilacji




Schocker - 17-03-2012, 12:19

@Up: Mam bardzo podobnie. Tzn. udało mi się skompilować i grafika byłą prawidłowa, ale gra byłą w połowie po francusku i w ogóle... Na świeżym projekcie wszystkie czcionki są ok, ale brakuje innych rzeczy (grafik etc.), gdy je skopiuję z innych folderów - czcionki siadają.
krzys_h - 17-03-2012, 14:03

Ja ustawiłem _POLISH na TRUE i skopiowałem colobot*.dat z oryginalnej polskiej gry, a następnie wypakowałem archiwum Polish/TO_Send do głównego katalogu projektu. Po skompilowaniu mam w pełni działającego colobota po polsku.
cyklopek11 - 17-03-2012, 15:37

Potwierdzam to co napisał krzys_h miałem dokładnie takie same problemy z grafiką. Spolszczony colobot śmiga że aż miło.
lukas_j - 17-03-2012, 22:56

Dzięki za info - popróbuje :D
adiblol - 18-03-2012, 12:31

Mógłby ktoś podrzucić skompilowany i działający colobot.exe i cbot.dll?
Raptor - 18-03-2012, 13:45

Przy standardowych ustawieniach.

// Dzięki -adiblol

piotrdz - 19-03-2012, 23:42

Mogę potwierdzić, że też pod Windows 7 i VisualStudio 2010 i kompiluje się ładnie po drobnych zmianach w kodzie.
Edit: Niestety niezależnie od ustawień języka, po uruchomieniu wygląda tak:

krzys_h - 20-03-2012, 09:16

Ustaw polski i skopiuj oryginalne pliki colobot*.dat z gry
musznik - 23-03-2012, 15:11

ten sam problem jest i u mnie w vs2010, i kopiowanie tu nic nie pomaga, zmiana DX tez nie ;] cieżki orzech...
lukas_j - 22-04-2012, 14:05

Cieszylem się za wcześniej z tego ze kod kompiluje się pod cmake...

niestety, zainstalowalem mingw (wykonalem wszystko co jest napisane w HOWTO.TXT) i wybralem wszystkie opcje podczas instalacji, powtarzam WSZYSTKIE. Oczywiście wszystko robie pod windowsem...

no i oczywiście w cholere czasu instalacji, potem rozczarowanie...

cmake: command not found :/

Mogłby ktoś podesłac potrzebne pliki z katalogu bin w folderze mingw? Albo podać rozwiązanie tego problemu?

adiblol - 22-04-2012, 15:01

Zainstalować cmake na mingw. Nie wiem czy tak jest jakiś menedżer pakietów...
lukas_j - 22-04-2012, 15:11

Wystarczyło pobrać cmake (zip dla windows)
http://www.cmake.org/cmake/resources/software.html

i skopiowac pliki z katalogów bin i share do mingw (uwaga podczas kopiowania share, bo folder alocal juz istnieje, wiec kopiujemy tylko plik z tego katalogu).

i przede wszystkim cmake wywołujemy w katalogu gdzie są foldery src i bin, ale nie wchodzimy do folderu src :P

Ale pozostaje problem z tym, ze jak skompilowalem to normalnie odpala. Ale niestety... próbuje włączyć misje - to wyskakuje błąd :/

piotrdz - 24-04-2012, 12:26

Faktycznie, nie dopisałem o instalacji CMake. Bug z ładowaniem misji też zauważyłem - zgłoszony jest w issues, ale niestety nie mam czasu teraz się tym zająć.
lukas_j - 29-04-2012, 11:46

No a ja próbuje na wszelkie sposoby odpalić misje itp... ach no cóż... :/ Ale i tak postępy są skoro sie pod cmake kompiluje :)

Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group