Autor Wątek: ogre3d, pytania i problem z przygotowaniem do pracy-linux  (Przeczytany 6580 razy)

Offline Dash

  • Użytkownik

# Luty 06, 2015, 17:53:52
Witam drogich użytkowników,
 w telegraficznym skrócie : znam c++ (ekspertem nie jestem, ale co nieco liznąłem) pracuje na systemie ubuntu 14,04, w środowisku code::blocks

1. Chciałem zacząć od silnika ogre3d (zależy mi na tym aby silnik był darmowy). Przeceniłem swoje siły... poległem na instalacji. W sumie niby go zainstalowałem, niby coś, ale nie działa. Instrukcji na ich stronie nie rozumiem. Angielski może i znam, ale co trzecie słowo tam jest dla mnie czymś zupełnie abstrakcyjnym. Czy mógłby mi ktoś łopatologicznie wytłumaczyć jak ten silnik przygotować do pracy? Ew. może zacząć od czegoś prostszego (irrlight albo coś zupełnie dla laików w tej dziedzinie).

2.Czy zaczynanie przygody z tworzeniem gier na silniku ogre3d jest dobrym pomysłem? Nie boję się wyzwań i chciałbym aby gra była jak najwyższych lotów jak na moje możliwości lecz nawet ja nie wiem czy to pojmę.

3.Macie jakieś ogólne porady dot. tworzenia gier na linuxie (chciałbym aby działały też pod Win)?

Serdecznie dziękuje za odpowiedzi, i przepraszam że pytania są dość trywialne, ale jestem zupełnym newbie w tej materii.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline P@tyS

  • Użytkownik
    • Patys coding

# Luty 06, 2015, 18:19:31
Ad.1. Jak chciałem coś zrobić w 3d, to używałem Irrlicht http://irrlicht.sourceforge.net/, jest prosty, szybki i można szybko fajne rzeczy zrobić. Z ogre3d nie probowałem nic większego zrobić (udało mi się go jakoś postawić, ale jakoś nie ogarniałem co się dzieje). Tak więc polecam irrlicht. Z instalacją nie powinno być problemu (jest w repozytoriach, chyba nawet najnowsza wersja).

Ad.2. Jak wyżej. I Irrlicht na początek jest prostszy, masa przykładów, dobra dokumentacja.

Ad.3. Ja wszystko robię na linuxie, a jak coś chcę pod windowsa zrobić to używam MinGW. Ogólnie lepiej mi się programuje pod linuxem. Pogadanka od steam na temat tworzenia dla linuxów: http://youtu.be/Sd8ie5R4CVE
« Ostatnia zmiana: Luty 06, 2015, 18:22:04 wysłana przez P@tyS »

Offline toxic

  • Użytkownik

# Luty 06, 2015, 19:08:39
Ad.1. A z czym dokladnie masz problem? W miare moich skromnych mozliwosci moge Ci sprobowac pomoc to ogarnac - kiedys stawialem ogra3d na linuksie, to i troche pamietam jak to wygladalo. Masz jakis konkretny problem, czy po prostu nie wiesz gdzie "wbić łopatę"? :)

Ad.2. Wg mnie zaczynanie z Ogre 3d nie jest dobrym pomyslem. Nie to, zeby go unikac, ale wlasnie ze wzgledu na zainstalowanie po raz pierwszy tego cholerstwa i przygotowanie do pracy. Jak przedmowca - polecilbym juz takiego Irrlichta3d (lub cos jeszcze inszego) - zeby cokolwiek zaczelo dzialac, a po jakims czasie zastanowil sie nad przesiatką.

Ad.3. Rownolegle developowac/testowac na windowsach. Inaczej duzo sie czasu traci na pozniejsze odkrywanie, ktora zmiana spowodowala fatalne zepsucie sie na tym drugim srodowisku. Ot, taka rada.

pozdr,
tox

Offline Dash

  • Użytkownik

# Luty 06, 2015, 23:47:01

          Jeżeli chodzi o instalacje, to próbowałem, tylko trochę nie wyszło...
Zainstalowałem ogre (sudo apt-get install libogre-1.9-dev), następnie   pobrałem clean_ogre_cmake_project.zip
 clean_ogre_cmake_project_1-9.zip, dist  i frameworki. Gdzieś po drodze zainstalowałem jeszcze CMake.  No i w sumie nie mam pojęcia co z tym wszystkim zrobić. Zupełnie pogubiłem się w instrukcjach na ich stronie, chociaż znam już je prawie na pamięć.

 Zanim zacznę robić coś poważnego w  ogre, i tak mam zamiar najpierw ogarnąć sam proces projektowania, i wcielania pomysłu w kod za pomocą sfml. Ot samo przygotowanie ogre do pracy jest głównie aby powoli się go uczyć. Chociaż przez ostatnie kilka dni spędzone na ich supporcie czytając jak to zrobić odbiera mi chęci do życia.

Offline toxic

  • Użytkownik

# Luty 07, 2015, 01:54:57
Cytuj
(...) No i w sumie nie mam pojęcia co z tym wszystkim zrobić. Zupełnie pogubiłem się w instrukcjach na ich stronie, chociaż znam już je prawie na pamięć.

Zasadniczo to wypakowac clean_ogre_cmake_project_1-9.zip do jakiegos katalogu, wejsc tam do tego katalogu i np:
mkdir build
cd build
cmake ..
# tu sie pewnie cos pokwasi o brakujace dependencje, ale jakby nie pokwasilo, to potem:
make
# tu sie pewnie pokwasi o brakujace includy, ale jakby sie nie pokwasilo, to:
make install
cd build/dist/bin
./OgreApp
# tu sie pewnie pokwasi o brakujace pluginy - warto wtedy zajrzec do pliku plugins.cfg i poprawic sciezki lub usunac referencje do nieistniejacych pluginow
Mniej wiecej w tym kierunku...

Nie dziwie sie z tymi checiami do zycia: mi przed chwila postawienie tego zajelo z dobre 2h (a przeciez wiedzialem co chce osiagnac) - balagan jest z tym calym setupem ogra pod linuksem. Ale powiem Ci ze i tak jest lepiej niz te 5 lat temu :).

Sfml - dobry pomysl. Po co sie rzucac na kombajn 3d jak mozna sobie cos fajnego szybko zakodzic.[/code]

Offline Dash

  • Użytkownik

# Luty 07, 2015, 08:21:59
Wielkie dzięki! Że też Ci się chciało :P

Niestety przy "cmake .." występuje pierwszy problem. Szukałem rozwiązania w internecie, dodałem komendę
cmake . -DCMAKE_MODULE_PATH=/usr/share/OGRE/cmake/modules/
To tam mam "FindOGRE.cmake niestety to na nic. Terminal wypluwa :


CMake Warning (dev) in CMakeLists.txt:
  A logical block opening on the line

    /home/lord/ogre/clean_ogre_cmake_project/CMakeLists.txt:29 (if)

  closes on the line

    /home/lord/ogre/clean_ogre_cmake_project/CMakeLists.txt:41 (endif)

  with mis-matching arguments.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at CMakeLists.txt:40 (message):
  Failed to find module path.


-- Looking for OGRE...
-- Found Ogre Ghadamon (1.9.0)
-- Found OGRE: optimized;/usr/lib/x86_64-linux-gnu/libOgreMain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreMain.so
-- Looking for OGRE_Paging...
-- Found OGRE_Paging: optimized;/usr/lib/x86_64-linux-gnu/libOgrePaging.so;debug;/usr/lib/x86_64-linux-gnu/libOgrePaging.so
-- Looking for OGRE_Terrain...
-- Found OGRE_Terrain: optimized;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so
-- Looking for OGRE_Property...
-- Found OGRE_Property: optimized;/usr/lib/x86_64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86_64-linux-gnu/libOgreProperty.so
-- Looking for OGRE_RTShaderSystem...
-- Found OGRE_RTShaderSystem: optimized;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so
-- Looking for OGRE_Volume...
-- Found OGRE_Volume: optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so
-- Looking for OGRE_Overlay...
-- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so
-- Looking for OIS...
-- Found OIS: optimized;/usr/lib/x86_64-linux-gnu/libOIS.so;debug;/usr/lib/x86_64-linux-gnu/libOIS.so
-- Configuring incomplete, errors occurred!
See also "/home/lord/ogre/clean_ogre_cmake_project/build/CMakeFiles/CMakeOutput.log".

Plus, jak przebrnę  przez tą instrukcję, to będę miał ogre gotowe do pracy? To jest na prawdę takie trudne czy tylko ja jestem jeszcze nie  w temacie?

Offline BrunonDEV

  • Użytkownik
    • Construgia -- RPG

# Luty 07, 2015, 11:23:36
Cytuj
znam c++ (ekspertem nie jestem, ale co nieco liznąłem)

Umiesz C++ objektowe i proceduralne, czy tylko proceduralne?

Ja zaczynałem od Allegro (i przy Allegro zostałem :P), miło się tam tworzy małe gierki 2D, można się nauczyć "sensu" tworzenia tego. Na SFML radziłbym Ci przejść dopiero jak będziesz już obeznany z językiem, co do powyżej podanych silników, to nie mogę się zbyt wypowiedzieć, bo nigdy nie tworzyłem gier 3D w C++, ale nieco 'liznąłem' DirectX i wydaje mi się że też najlepiej zacząć od prostszych rzeczy, jak podane powyżej Allegro/SFML. :)

Offline Dash

  • Użytkownik

# Luty 07, 2015, 12:40:47
Zaczynam obiektowe. Jednak fajnie jest nowo nabytą wiedzę jakoś testować dlatego bawię się allegro/sfml. Ogre i irrlicht traktuje bardziej jako ciekawostkę, i walkę o dumę... zawsze myślałem ze instalacja niczego mnie nie przerośnie, poległem na silniku graficznym :/

Offline toxic

  • Użytkownik

# Luty 07, 2015, 13:22:51
@Dash, dobrze kombinujesz z tym -DCMAKE_MODULE_PATH=/usr/share/OGRE/cmake/modules/. Ale niestety plik
clean_ogre_cmake_project/CMakeLists.txt
jest "zle" napisany. Mianowicie otworz go sobie i spojrz na okolice linijki 40stej:
if(UNIX)
        if(EXISTS "/usr/local/lib/OGRE/cmake")

          set(CMAKE_MODULE_PATH "/usr/local/lib/OGRE/cmake/;${CMAKE_MODULE_PATH}")
          set(OGRE_SAMPLES_INCLUDEPATH "/usr/local/share/OGRE/samples/Common/include/") # We could just *assume* that developers uses this basepath : /usr/local

        elseif(EXISTS "/usr/lib/OGRE/cmake")

          set(CMAKE_MODULE_PATH "/usr/lib/OGRE/cmake/;${CMAKE_MODULE_PATH}")
          set(OGRE_SAMPLES_INCLUDEPATH "/usr/share/OGRE/samples/Common/include/") # Otherwise, this one

        else ()
            message(SEND_ERROR "Failed to find module path.")
        endif(EXISTS "/usr/local/lib/OGRE")
endif(UNIX)
co z tego, ze sobie ustawiles poprawnie CMAKE_MODULE_PATH (i Ogre sie wykrywa o czym swiadcza logi), jesli autorzy tutaj i tak nie biora pod uwage tego co ustawiles w CMAKE_MODULE_PATH i rzucaja errorem:
else ()
        message(SEND_ERROR "Failed to find module path.")

Wg mnie mozesz to rozwiazac np jesli sobie zakomentujesz tego message(SEND_ERROR):
#        message(SEND_ERROR "Failed to find module path.")I odpalisz caly proces konfiguracji od nowa, na czysto.

----------------

Cytuj
Plus, jak przebrnę  przez tą instrukcję, to będę miał ogre gotowe do pracy? To jest na prawdę takie trudne czy tylko ja jestem jeszcze nie  w temacie?
I to i to. W mojej opinii to Ogre3d ma dosyc nieprzetestowany proces przygotowywania do pracy pod linuksem (sprobuj odpalic Ogre'a pod windowsem - dam reke uciac, ze postawisz go sobie w gora 2-3 minuty, nie liczac downloadu). I jak sie nie wie co sie chce osiagnac (czytaj: pierwszy raz stawiasz Ogra) to wychodza co chwila takie drobne kwiatki, ze tu czegos brakuje, tam jest domyslnie zla wartosc, tutaj jakas paczka nie dociagnieta jest i potem łącznie to tyle czasu zajmuje...

A czy po czyms takim Ogre bedzie gotowy do pracy? Troche tak, troche nie. Teoretycznie tak, bo mozna basujac na tym "clean_ogre_cmake_project" costam pobawic, pozmieniac pare rzeczy i zobaczyc co to robi, ale z drugiej strony - przykladowo skad bedziesz bral assety (modele) do zabaw? Jesli Ci nie wystarcza te dostarczone razem z przykladami ogra, to bedziesz musial coś liznąć z konwertowania modeli do formatu obslugiwanego przez ogra. Niby rzecz trywialna, ale co, bedziesz sobie setupowac np. Blendera3D do tego? Troche czasu zajmie...

Offline Dash

  • Użytkownik

# Luty 07, 2015, 16:02:10
I jeszcze raz ja.... Dokładnie tak jak przewidziałeś po komendzie make, szlag wszystko trafił.


lord@hades:~/ogre/clean_ogre_cmake_project/build$ make
[ 50%] Building CXX object CMakeFiles/OgreApp.dir/BaseApplication.cpp.o
In file included from /home/lord/ogre/clean_ogre_cmake_project/BaseApplication.cpp:17:0:
/home/lord/ogre/clean_ogre_cmake_project/BaseApplication.h:34:22: fatal error: SdkTrays.h: Nie ma takiego pliku ani katalogu
 #include <SdkTrays.h>
                      ^
compilation terminated.
make[2]: *** [CMakeFiles/OgreApp.dir/BaseApplication.cpp.o] Błąd 1
make[1]: *** [CMakeFiles/OgreApp.dir/all] Błąd 2
make: *** [all] Błąd 2
lord@hades:~/ogre/clean_ogre_cmake_project/build$ ^C
lord@hades:~/ogre/clean_ogre_cmake_project/build$ ^C
lord@hades:~/ogre/clean_ogre_cmake_project/build$

Nie znam się za dobrze na linuksie (dopiero od jakiegoś tygodnia używam go regularnie, wcześniej jedynie sporadycznie, bez większego zagłębiania się) i gubię się przy takich logach. <SdkTrays.h> jest gdzieś w pobranych plikach czy muszę osobno pobrać z internetu?

   Jeżeli chodzi i grafikę, to się nie martwię. Mam znajomego grafika (pardon, graficzkę :) ) na której głowie spocznie przygotowanie jej. Bardziej martwi mnie dodawanie bibliotek, słyszałem że jest ich sporo i rozszerzają ogra o całkiem ciekawe opcje, np. PhysiX, Ode  czy wiele innych których pewnie jest całkiem sporo. Zastanawiam się czy nie łatwiej byłoby się przesiąść na win7. Tam to wszystko wygląda łatwiej i jest więcej tutoriali, jednak lepiej pracuje mi się na ubuntu.

Offline toxic

  • Użytkownik

# Luty 07, 2015, 16:44:04
Hm... SdkTrays.h - tez tego nie mialem. Tutaj pisza: http://www.ogre3d.org/forums/viewtopic.php?f=2&t=81320 , ze trzeba sobie dociagnac ze zrodel ten plik, bo go brakuje w paczkach ubuntu...

Z braku lepszego pomyslu ja sobie poradzilem tak, ze poszedlem tutaj: https://bitbucket.org/sinbad/ogre/src/dd30349ea667/Samples/Common/include/?at=v1-9-0 i sobie sciagnalem kazdy brakujacy plik .h i wsadzilem go sobie do /usr/include/OGRE (czyli tam, gdzie inne headery ogra sie mi zainstalowaly). Coś w ten deseń zrobiłem:
sudo cp SdkTrays.h /usr/include/OGRE
sudo cp InputContext.h /usr/include/OGRE
sudo cp SdkCameraMan.h /usr/include/OGRE
Wtedy zadzialala kompilacja...

A co do linux vs win7 -> nie wiem :)

Offline Dash

  • Użytkownik

# Luty 07, 2015, 18:34:26
Kolejny problem....
Loading library /usr/local/lib/OGRE/RenderSystem_GL
An exception has occured: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library /usr/local/lib/OGRE/RenderSystem_GL.  System Error: /usr/local/lib/OGRE/RenderSystem_GL.so.1.9.0: cannot open shared object file: No such file or directory in DynLib::load at /build/buildd/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreDynLib.cpp (line 109)

Nie potrafię tego rozszyfrować. Występuje przy komendzie ./OgreApp  .
W między czasie brakowało 3 plików .h oraz źle usytuowany folder /dist. Mam nadzieję że to już ostatnia komplikacja.

Offline toxic

  • Użytkownik

# Luty 07, 2015, 19:17:01
A wez sprawdz plik "plugins.cfg" (masz go gdzies obok zbudowanego OgreApp), i tamze zobacz na co wskazuje zmienna PluginFolder (pewnie na "/usr/local/lib/OGRE"). Prawdopodobnie musisz zmienic sciezke na inna, bo RenderSystem_GL.so (to taki ogrowy plugin do renderowania sie za pomoca opengl) lezy u Ciebie pewnie gdzies indziej.
Tutaj pisza: http://stackoverflow.com/questions/24351449/could-not-load-dynamic-library-usr-lib-ogre-rendersystem-gl , ze domyslne paczki ubuntu wrzucaja ten (i inne) pluginy ogra do katalogu /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/ a nie do usr/local/lib/OGRE. Moze tez tam masz?

Aha, i jesli natkniesz sie pozniej na problem, ze nie ma plugina CgProgramManager, to chyba mozesz go zakomentowac w plugins.cfg:
# Plugin=Plugin_CgProgramManagerZdaje sie, ze domyslnie nie jest dostarczony w paczce ubuntu i chyba nie jest az tak istotny aby na poczatku bez niego nie pracowac...

Offline Dash

  • Użytkownik

# Luty 07, 2015, 21:15:15
Halleluja, skompilowane. Wpisuje pierwszy program z tutorialu pierwszego i... kupka :(
Brakowało plików : ExampleApplication.h i ExampleFrameListener.h . Skopiowałem ich zawartość z zasobów internetu, stworzyłem te pliki a następnie umieściłem komendą :

/home/lord/desktop/ExampleApplication.h /usr/include/OGREi analogicznie drugi. (to tak dla przyszłych pokoleń, gdyby znowu trafiła się taka ciemna masa)

Przy kolejnej próbie kompilacji wyskoczyły problemy z # w ExampleFrameListener.h . Nie wiem czy właściwie, ale usunąłem ten problem po prostu je usuwając. Poszło dalej, tym razem kompilator bombarduje mnie
-------------- Build: Debug in ogre_test (compiler: GNU GCC Compiler)---------------

g++ -pthread -I/usr/include/OGRE -Wall -fexceptions -g  -c /home/lord/ogre/ogre_test/main.cpp -o obj/Debug/main.o
In file included from /usr/include/OGRE/ExampleApplication.h:26:0,
                 from /home/lord/ogre/ogre_test/main.cpp:12:
/usr/include/OGRE/ExampleFrameListener.h:1:1: error: expected unqualified-id before numeric constant
 1 /*
 ^
/usr/include/OGRE/ExampleFrameListener.h:48:1: error: expected unqualified-id before numeric constant
 48
 ^
Process terminated with status 1 (0 minute(s), 3 second(s))
2 error(s), 0 warning(s) (0 minute(s), 3 second(s))
 

Tym razem nie wiem co mam zrobić...

Offline toxic

  • Użytkownik

# Luty 07, 2015, 21:41:44
Cytuj
Wpisuje pierwszy program z tutorialu pierwszego
A co to jest pierwszy program z tutorialu pierwszego?